1This is maxima.info, produced by makeinfo version 6.6 from maxima.texi.
2
3Este es el Manual de Maxima en versi�n Texinfo
4
5Copyright 1994, 2001 William F. Schelter
6
7START-INFO-DIR-ENTRY
8* Maxima: (maxima).  Un sistema de c�lculo simb�lico
9END-INFO-DIR-ENTRY
10
11
12File: maxima.info,  Node: Funciones de Airy,  Next: Funciones Gamma y factorial,  Prev: Funciones de Bessel,  Up: Funciones Especiales
13
1415.3 Funciones de Airy
15======================
16
17Las funciones de Airy Ai(x) y Bi(x) se definen en la secci�n 10.4.  de
18Abramowitz and Stegun, Handbook of Mathematical Functions.
19
20'y = Ai(x)' y 'y = Bi(x)' son dos soluciones linealmente independientes
21de la ecuaci�n diferencia de Airy 'diff (y(x), x, 2) - x y(x) = 0'.
22
23Si el argumento 'x' es un n�mero decimal en coma flotante real o
24complejo, se devolver� el valor num�rico de la funci�n.
25
26 -- Funci�n: airy_ai (<x>)
27     Funci�n de Airy Ai(x).  (A&S 10.4.2)
28
29     La derivada 'diff (airy_ai(x), x)' es 'airy_dai(x)'.
30
31     V�anse 'airy_bi', 'airy_dai' y 'airy_dbi'.
32
33 -- Funci�n: airy_dai (<x>)
34     Es la derivada de la funci�n Ai de Airy, 'airy_ai(x)'.
35
36     V�ase 'airy_ai'.
37
38 -- Funci�n: airy_bi (<x>)
39     Es la funci�n Bi de Airy, tal como la definen Abramowitz y Stegun,
40     Handbook of Mathematical Functions, Secci�n 10.4.  Se trata de la
41     segunda soluci�n de la ecuaci�n de Airy 'diff (y(x), x, 2) - x y(x)
42     = 0'.
43
44     Si el argumento 'x' es un n�mero decimal real o complejo, se
45     devolver� el valor num�rico de 'airy_bi' siempre que sea posible.
46     En los otros casos, se devuelve la expresi�n sin evaluar.
47
48     La derivada 'diff (airy_bi(x), x)' es 'airy_dbi(x)'.
49
50     V�anse 'airy_ai' y 'airy_dbi'.
51
52 -- Funci�n: airy_dbi (<x>)
53     Es la derivada de la funci�n Bi de Airy, 'airy_bi(x)'.
54
55     V�anse 'airy_ai' y 'airy_bi'.
56
57
58File: maxima.info,  Node: Funciones Gamma y factorial,  Next: Integral exponencial,  Prev: Funciones de Airy,  Up: Funciones Especiales
59
6015.4 Funciones Gamma y factorial
61================================
62
63Las funciones gamma, beta, psi y gamma incompleta est�n definidas en el
64cap�tulo 6 de Abramowitz y Stegun, Handbook of Mathematical Functions.
65
66 -- Funci�n: bffac (<expr>, <n>)
67     Versi�n para "bigfloat" de la funci�n factorial (Gamma desplazada).
68     El segundo argumento indica cu�ntos d�gitos se conservan y
69     devuelven, pudiendo utilizarse para obtener algunas cifras extra.
70
71 -- Variable optativa: algepsilon
72     Valor por defecto: 10^8
73
74     El valor de 'algepsilon' es usado por 'algsys'.
75
76 -- Funci�n: bfpsi (<n>, <z>, <fpprec>)
77 -- Funci�n: bfpsi0 (<z>, <fpprec>)
78     La funci�n 'bfpsi' es la poligamma de argumento real <z> y de orden
79     el entero <n>.  La funci�n 'bfpsi0' es la digamma.  La llamada
80     'bfpsi0 (<z>, <fpprec>)' equivale a 'bfpsi (0, <z>, <fpprec>)'.
81
82     Estas funciones devuelven valores "bigfloat".  La variable <fpprec>
83     es la precisi�n "bigfloat" del valor de retorno.
84
85 -- Funci�n: cbffac (<z>, <fpprec>)
86     Calcula el factorial de n�meros complejos de punto flotante
87     grandes.
88
89     La instrucci�n 'load ("bffac")' carga esta funci�n.
90
91 -- Funci�n: gamma (<x>)
92
93     La definici�n b�sica de la funci�n gamma (A&S 6.1.1) es
94
95                                         inf
96                                        /
97                                        [     z - 1   - t
98                             gamma(z) = I    t      %e    dt
99                                        ]
100                                        /
101                                         0
102
103     Maxima simplifica 'gamma' para enteros positivos y para fracciones
104     positivas o negativas.  Para fracciones de denominador dos, el
105     resultado es un n�mero racional multiplicado por 'sqrt(%pi)'.  La
106     simplificaci�n para valores enteros la controla 'factlim'.  Para
107     enteros mayores que 'factlim' el resultado num�rico de la funci�n
108     factorial, la cual se utiliza para calcular 'gamma', producir� un
109     desbordamiento.  La simplificaci�n para n�meros racionales la
110     controla 'gammalim' para evitar desbordamientos.  V�anse tambi�n
111     'factlim' y 'gammalim'.
112
113     Para enteros negativos, 'gamma' no est� definida.
114
115     Maxima puede evaluar 'gamma' num�ricamente para valores reales y
116     complejos, tanto en formato float (doble precisi�n) como big float
117     (precisi�n arbitraria).
118
119     La funci�n 'gamma' tiene simetr�a especular.
120
121     Si 'gamma_expand' vale 'true', Maxima expande 'gamma' para
122     argumentos del tipo 'z+n' y 'z-n', siendo 'n' un entero.
123
124     Maxima conoce la derivada de 'gamma'.
125
126     Ejemplos:
127
128     Simplificaci�n para enteros, fracciones de denominador dos y
129     n�meros racionales:
130
131          (%i1) map('gamma,[1,2,3,4,5,6,7,8,9]);
132          (%o1)               [1, 1, 2, 6, 24, 120, 720, 5040, 40320]
133
134          (%i2) map('gamma,[1/2,3/2,5/2,7/2]);
135                                     sqrt(%pi)  3 sqrt(%pi)  15 sqrt(%pi)
136          (%o2)          [sqrt(%pi), ---------, -----------, ------------]
137                                         2           4            8
138
139          (%i3) map('gamma,[2/3,5/3,7/3]);
140                                                  2           1
141                                          2 gamma(-)  4 gamma(-)
142                                      2           3           3
143          (%o3)                [gamma(-), ----------, ----------]
144                                      3       3           9
145
146     Evaluaci�n num�rica para valores reales y complejos:
147
148          (%i4) map('gamma,[2.5,2.5b0]);
149          (%o4)             [1.329340388179137, 1.329340388179137b0]
150
151          (%i5) map('gamma,[1.0+%i,1.0b0+%i]);
152          (%o5) [.4980156681183558 - .1549498283018108 %i,
153                                4.980156681183561b-1 - 1.549498283018107b-1 %i]
154
155     Simetr�a especular:
156
157          (%i6) declare(z,complex)$
158          (%i7) conjugate(gamma(z));
159          (%o7)                         gamma(conjugate(z))
160
161     Maxima expande 'gamma(z+n)' y 'gamma(z-n)' si 'gamma_expand' vale
162     'true':
163
164          (%i8) gamma_expand:true$
165          (%i9) [gamma(z+1),gamma(z-1),gamma(z+2)/gamma(z+1)];
166                                                gamma(z)
167          (%o9)                    [z gamma(z), --------, z + 1]
168                                                 z - 1
169
170     Derivada de 'gamma':
171
172          (%i10) diff(gamma(z),z);
173          (%o10)                         psi (z) gamma(z)
174                                            0
175
176     V�ase tambi�n 'makegamma'.
177
178     La constante de Euler-Mascheroni es '%gamma'.
179
180 -- Funci�n: log_gamma (<z>)
181     Logaritmo natural de la funci�n gamma.
182
183 -- Funci�n: gamma_incomplete_lower (<a>, <z>)
184
185     Funci�n gamma incompleta inferior (A&S 6.5.2):
186
187                                              z
188                                             /
189                                             [  a - 1   - t
190              gamma_incomplete_lower(a, z) = I t      %e    dt
191                                             ]
192                                             /
193                                              0
194
195     V�ase tambi�n 'gamma_incomplete' (funci�n gamma incompleta
196     superior).
197
198 -- Funci�n: gamma_incomplete (<a>,<z>)
199     Funci�n gamma incompleta superior, A&S 6.5.3:
200
201                                        inf
202                                       /
203                                       [     a - 1   - t
204              gamma_incomplete(a, z) = I    t      %e    dt
205                                       ]
206                                       /
207                                        z
208
209     V�anse tambi�n 'gamma_expand' para controlar c�mo se expresa
210     'gamma_incomplete' en t�rminos de funciones elementales y de
211     'erfc'.
212
213     V�anse tambi�n las funciones relacionadas
214     'gamma_incomplete_regularized' y 'gamma_incomplete_generalized'.
215
216 -- Funci�n: gamma_incomplete_regularized (<a>,<z>)
217     Funci�n gamma incompleta superior regularizada, A&S 6.5.1.
218
219          gamma_incomplete_regularized(a, z) =
220                                                  gamma_incomplete(a, z)
221                                                  ----------------------
222                                                         gamma(a)
223
224     V�anse tambi�n 'gamma_expand' para controlar c�mo se expresa
225     'gamma_incomplete' en t�rminos de funciones elementales y de
226     'erfc'.
227
228     V�ase tambi�n 'gamma_incomplete'.
229
230 -- Funci�n: gamma_incomplete_generalized (<a>,<z1>,<z1>)
231     Funci�n gamma incompleta generalizada.
232
233          gamma_incomplete_generalized(a, z1, z2) =
234                                                         z2
235                                                        /
236                                                        [    a - 1   - t
237                                                        I   t      %e    dt
238                                                        ]
239                                                        /
240                                                         z1
241
242     V�anse tambi�n 'gamma_incomplete' y 'gamma_incomplete_regularized'.
243
244 -- Variable opcional: gamma_expand
245     Valor por defecto: 'false'
246
247     'gamma_expand' controla la expansi�n de 'gamma_incomplete'.  Si
248     'gamma_expand' vale 'true', 'gamma_incomplete(v,z)' se expande en
249     t�rminos de 'z', 'exp(z)' y 'erfc(z)', siempre que sea posible.
250
251          (%i1) gamma_incomplete(2,z);
252          (%o1)                       gamma_incomplete(2, z)
253          (%i2) gamma_expand:true;
254          (%o2)                                true
255          (%i3) gamma_incomplete(2,z);
256                                                     - z
257          (%o3)                            (z + 1) %e
258          (%i4) gamma_incomplete(3/2,z);
259                                        - z   sqrt(%pi) erfc(sqrt(z))
260          (%o4)               sqrt(z) %e    + -----------------------
261                                                         2
262
263 -- Variable optativa: gammalim
264     Valor por defecto: 10000
265
266     La variable 'gammalim' controla la simplificaci�n de la funci�n
267     gamma con argumentos enteros o racionales.  Si el valor absoluto
268     del argumento no es mayor que 'gammalim', entonces se realizar� la
269     simplificaci�n.  N�tese que la variable 'factlim' tambi�n controla
270     la simplificaci�n del resultado de 'gamma' con argumento entero.
271
272 -- Funci�n: makegamma (<expr>)
273     Transforma las funciones 'binomial', 'factorial' y 'beta' que
274     aparecen en <expr> en funciones 'gamma'.
275
276     V�ase tambi�n 'makefact'.
277
278 -- Funci�n: beta (<a>, <b>)
279     La funci�n beta se define como 'gamma(a) gamma(b)/gamma(a+b)' (A&S
280     6.2.1).
281
282     Maxima simplifica la funci�n beta para enteros positivos y n�meros
283     racionales cuya suma sea entera.  Si 'beta_args_sum_to_integer'
284     vale 'true', Maxima tambi�n simplifica expresiones generales cuya
285     suma sea tambi�n entera.
286
287     Cuando <a> o <b> sean nulos, la funci�n beta no est� definida.
288
289     En general, la funci�n beta no est� definida para enteros
290     negativos.  La excepci�n es para <a=-n>, siendo <n> un entero
291     positivo y <b> otro entero positivo tal que <b<=n>, entonces es
292     posible definir una continuaci�n anal�tica.  En este caso Maxima
293     devuelve un resultado.
294
295     Si 'beta_expand' vale 'true', expresiones como 'beta(a+n,b)',
296     'beta(a-n,b)', 'beta(a,b+n)' o 'beta(a,b-n)', siendo 'n' entero, se
297     simplifican.
298
299     Maxima puede evaluar la funci�n beta para valores reales y
300     complejos, tanto de tipo decimal flotante o big float.  Para la
301     evaluaci�n num�rica Maxima utiliza 'log_gamma':
302
303                     - log_gamma(b + a) + log_gamma(b) + log_gamma(a)
304                   %e
305
306     Maxima reconoce la simetr�a de la funci�n beta.
307
308     Maxima conoce las derivadas de la funci�n beta, tanto respecto de
309     <a> como de <b>.
310
311     Para expresar la funci�n beta como un cociente de funciones gamma,
312     v�ase 'makegamma'.
313
314     Ejemplos:
315
316     Simplificaci�n cuando uno de sus argumentos es entero:
317
318          (%i1) [beta(2,3),beta(2,1/3),beta(2,a)];
319                                         1   9      1
320          (%o1)                         [--, -, ---------]
321                                         12  4  a (a + 1)
322
323     Simplificaci�n para argumentos racionales que suman un entero:
324
325          (%i2) [beta(1/2,5/2),beta(1/3,2/3),beta(1/4,3/4)];
326                                    3 %pi   2 %pi
327          (%o2)                    [-----, -------, sqrt(2) %pi]
328                                      8    sqrt(3)
329
330     Cuando se iguala 'beta_args_sum_to_integer' a 'true' se simplifican
331     expresiones m�s generales si la suma de los argumentos se reduce a
332     un entero:
333
334          (%i3) beta_args_sum_to_integer:true$
335          (%i4) beta(a+1,-a+2);
336                                          %pi (a - 1) a
337          (%o4)                         ------------------
338                                        2 sin(%pi (2 - a))
339
340     Posibles valores cuando uno de los argumentos es entero negativo:
341
342          (%i5) [beta(-3,1),beta(-3,2),beta(-3,3)];
343                                              1  1    1
344          (%o5)                            [- -, -, - -]
345                                              3  6    3
346
347     'beta(a+n,b)' o 'beta(a-n)' con 'n' entero se simplifica si
348     'beta_expand' vale 'true':
349
350          (%i6) beta_expand:true$
351          (%i7) [beta(a+1,b),beta(a-1,b),beta(a+1,b)/beta(a,b+1)];
352                              a beta(a, b)  beta(a, b) (b + a - 1)  a
353          (%o7)              [------------, ----------------------, -]
354                                 b + a              a - 1           b
355
356
357     La funci�n beta no est� definida si uno de sus argumentos es cero:
358
359          (%i7) beta(0,b);
360          beta: expected nonzero arguments; found 0, b
361           -- an error.  To debug this try debugmode(true);
362
363     Evaluaci�n num�rica para argumentos reales y complejos de tipo
364     decimal flotante o big float:
365
366          (%i8) beta(2.5,2.3);
367          (%o8) .08694748611299981
368
369          (%i9) beta(2.5,1.4+%i);
370          (%o9) 0.0640144950796695 - .1502078053286415 %i
371
372          (%i10) beta(2.5b0,2.3b0);
373          (%o10) 8.694748611299969b-2
374
375          (%i11) beta(2.5b0,1.4b0+%i);
376          (%o11) 6.401449507966944b-2 - 1.502078053286415b-1 %i
377
378     La funci�n beta es sim�trica con simetr�a especular:
379
380          (%i14) beta(a,b)-beta(b,a);
381          (%o14)                                 0
382          (%i15) declare(a,complex,b,complex)$
383          (%i16) conjugate(beta(a,b));
384          (%o16)                 beta(conjugate(a), conjugate(b))
385
386     Derivada de la funci�n beta respecto de 'a':
387
388          (%i17) diff(beta(a,b),a);
389          (%o17)               - beta(a, b) (psi (b + a) - psi (a))
390                                                0             0
391
392 -- Funci�n: beta_incomplete (<a>, <b>, <z>)
393     La definici�n b�sica de la funci�n beta incompleta (A&S 6.6.1) es
394
395                                 z
396                                /
397                                [         b - 1  a - 1
398                                I  (1 - t)      t      dt
399                                ]
400                                /
401                                 0
402
403     Esta definici�n es posible para realpart(a)>0, realpart(b)>0 y
404     abs(z)<1.  Para otras situaciones, la funci�n beta incompleta puede
405     definirse por medio de una funci�n hipergeom�trica generalizada:
406
407             gamma(a) hypergeometric_generalized([a, 1 - b], [a + 1], z) z
408     (V�ase Funci�ns.wolfram.com para una completa definici�n de la
409     funci�n beta incompleta.)
410
411     Para enteros negativos a = -n y enteros positivos b=m con m<=n la
412     funci�n beta incompleta se define como
413
414                                      m - 1           k
415                                      ====  (1 - m)  z
416                                n - 1 \            k
417                               z       >    -----------
418                                      /     k! (n - k)
419                                      ====
420                                      k = 0
421     Maxima utiliza esta definici�n para simplificar 'beta_incomplete'
422     cuando <a> es entero negativo.
423
424     Cuando <a> es entero positivo, 'beta_incomplete' se simplifica para
425     cualesquiera argumentos <b> y <z>, y para <b> entero positivo para
426     cualesquiera argumentos <a> y <z>, con la excepci�n de cuando <a>
427     sea entero negativo.
428
429     Para z=0 y realpart(a)>0, 'beta_incomplete' se anula.  Para <z=1> y
430     realpart(b)>0, 'beta_incomplete' se reduce a la funci�n
431     'beta(a,b)'.
432
433     Maxima eval�a 'beta_incomplete' num�ricamente para valores reales y
434     complejos en forma decimal y big float.  La evaluaci�n num�rica se
435     realiza expandiendo la funci�n beta incompleta en fracciones
436     continuas.
437
438     Si 'beta_expand' vale 'true', Maxima expande las expresiones
439     'beta_incomplete(a+n,b,z)' y 'beta_incomplete(a-n,b,z)', siendo <n>
440     entero positivo.
441
442     Maxima conoce las derivadas de 'beta_incomplete' con respecto a las
443     variables <a>, <b> y <z>, as� como la integral respecto de la
444     variable <z>.
445
446     Ejemplos:
447
448     Simplificaci�n para <a> entero positivo:
449
450          (%i1) beta_incomplete(2,b,z);
451                                                 b
452                                      1 - (1 - z)  (b z + 1)
453          (%o1)                       ----------------------
454                                            b (b + 1)
455
456     Simplificaci�n para <b> entero positivo:
457
458          (%i2) beta_incomplete(a,2,z);
459                                                         a
460                                        (a (1 - z) + 1) z
461          (%o2)                         ------------------
462                                            a (a + 1)
463
464     Simplificaci�n para <a> y <b> enteros positivos:
465
466          (%i3) beta_incomplete(3,2,z);
467                                                         3
468                                        (3 (1 - z) + 1) z
469          (%o3)                         ------------------
470                                                12
471
472     Para <a> entero negativo y b<=(-a):
473
474          (%i4) beta_incomplete(-3,1,z);
475                                                 1
476          (%o4)                              - ----
477                                                  3
478                                               3 z
479
480     Simplificaci�n para los valores z=0 y z=1:
481
482          (%i5) assume(a>0,b>0)$
483          (%i6) beta_incomplete(a,b,0);
484          (%o6)                                 0
485          (%i7) beta_incomplete(a,b,1);
486          (%o7)                            beta(a, b)
487
488     Evaluaci�n num�rica, tanto con float (precisi�n doble) como big
489     float (precisi�n arbitraria):
490
491          (%i8) beta_incomplete(0.25,0.50,0.9);
492          (%o8)                          4.594959440269333
493          (%i9)  fpprec:25$
494          (%i10) beta_incomplete(0.25,0.50,0.9b0);
495          (%o10)                    4.594959440269324086971203b0
496
497     Para abs(z)>1, 'beta_incomplete' devuelve un resultado complejo:
498
499          (%i11) beta_incomplete(0.25,0.50,1.7);
500          (%o11)              5.244115108584249 - 1.45518047787844 %i
501
502     Resultados para argumentos complejos m�s generales:
503
504          (%i14) beta_incomplete(0.25+%i,1.0+%i,1.7+%i);
505          (%o14)             2.726960675662536 - .3831175704269199 %i
506          (%i15) beta_incomplete(1/2,5/4*%i,2.8+%i);
507          (%o15)             13.04649635168716 %i - 5.802067956270001
508          (%i16)
509
510     Expansi�n cuando 'beta_expand' vale 'true':
511
512          (%i23) beta_incomplete(a+1,b,z),beta_expand:true;
513                                                                 b  a
514                             a beta_incomplete(a, b, z)   (1 - z)  z
515          (%o23)             -------------------------- - -----------
516                                       b + a                 b + a
517
518          (%i24) beta_incomplete(a-1,b,z),beta_expand:true;
519                                                                     b  a - 1
520                     beta_incomplete(a, b, z) (- b - a + 1)   (1 - z)  z
521          (%o24)     -------------------------------------- - ---------------
522                                     1 - a                         1 - a
523
524     Derivada e integral de 'beta_incomplete':
525
526               (%i34) diff(beta_incomplete(a, b, z), z);
527                                             b - 1  a - 1
528               (%o34)                 (1 - z)      z
529               (%i35) integrate(beta_incomplete(a, b, z), z);
530                             b  a
531                      (1 - z)  z
532               (%o35) ----------- + beta_incomplete(a, b, z) z
533                         b + a
534                                                      a beta_incomplete(a, b, z)
535                                                    - --------------------------
536                                                                b + a
537               (%i36) factor(diff(%, z));
538               (%o36)              beta_incomplete(a, b, z)
539
540
541 -- Funci�n: beta_incomplete_regularized (<a>, <b>, <z>)
542     Funci�n beta incompleta regularizada A&S 6.6.2, definida como
543
544          beta_incomplete_regularized(a, b, z) =
545                                                beta_incomplete(a, b, z)
546                                                ------------------------
547                                                       beta(a, b)
548
549     Al igual que 'beta_incomplete', esta definici�n no es completa.
550     V�ase Funci�ns.wolfram.com para una definici�n completa de
551     'beta_incomplete_regularized'.
552
553     'beta_incomplete_regularized' se simplifica para <a> o <b> entero
554     positivo.
555
556     Para z=0 y realpart(a)>0, 'beta_incomplete_regularized' se anula.
557     Para <z=1> y realpart(b)>0, 'beta_incomplete_regularized' se reduce
558     a 1.
559
560     Maxima eval�a 'beta_incomplete_regularized' num�ricamente para
561     valores reales y complejos en forma decimal y big float.
562
563     Si 'beta_expand' vale 'true', Maxima expande
564     'beta_incomplete_regularized' para los argumentos a+n o a-n, siendo
565     <n> entero.
566
567     Maxima conoce las derivadas de 'beta_incomplete_regularized' con
568     respecto a las variables <a>, <b> y <z>, as� como la integral
569     respecto de la variable <z>.
570
571     Ejemplos:
572
573     Simplificaci�n para <a> o <b> enteros positivos:
574
575          (%i1) beta_incomplete_regularized(2,b,z);
576                                                 b
577          (%o1)                       1 - (1 - z)  (b z + 1)
578
579          (%i2) beta_incomplete_regularized(a,2,z);
580                                                         a
581          (%o2)                         (a (1 - z) + 1) z
582
583          (%i3) beta_incomplete_regularized(3,2,z);
584                                                         3
585          (%o3)                         (3 (1 - z) + 1) z
586
587     Simplificaci�n para los valores z=0 y z=1:
588
589          (%i4) assume(a>0,b>0)$
590          (%i5) beta_incomplete_regularized(a,b,0);
591          (%o5)                                 0
592          (%i6) beta_incomplete_regularized(a,b,1);
593          (%o6)                                 1
594
595     Evaluaci�n num�rica, tanto con float (precisi�n doble) como big
596     float (precisi�n arbitraria):
597
598          (%i7) beta_incomplete_regularized(0.12,0.43,0.9);
599          (%o7)                         .9114011367359802
600          (%i8) fpprec:32$
601          (%i9) beta_incomplete_regularized(0.12,0.43,0.9b0);
602          (%o9)               9.1140113673598075519946998779975b-1
603          (%i10) beta_incomplete_regularized(1+%i,3/3,1.5*%i);
604          (%o10)             .2865367499935403 %i - 0.122995963334684
605          (%i11) fpprec:20$
606          (%i12) beta_incomplete_regularized(1+%i,3/3,1.5b0*%i);
607          (%o12)      2.8653674999354036142b-1 %i - 1.2299596333468400163b-1
608
609     Expansi�n cuando 'beta_expand' vale 'true':
610
611          (%i13) beta_incomplete_regularized(a+1,b,z);
612                                                               b  a
613                                                        (1 - z)  z
614          (%o13) beta_incomplete_regularized(a, b, z) - ------------
615                                                        a beta(a, b)
616          (%i14) beta_incomplete_regularized(a-1,b,z);
617          (%o14) beta_incomplete_regularized(a, b, z)
618                                                               b  a - 1
619                                                        (1 - z)  z
620                                                   - ----------------------
621                                                     beta(a, b) (b + a - 1)
622
623
624     Derivada e integral respecto de <z>:
625
626          (%i15) diff(beta_incomplete_regularized(a,b,z),z);
627                                        b - 1  a - 1
628                                 (1 - z)      z
629          (%o15)                 -------------------
630                                     beta(a, b)
631          (%i16) integrate(beta_incomplete_regularized(a,b,z),z);
632          (%o16) beta_incomplete_regularized(a, b, z) z
633                                                                     b  a
634                                                              (1 - z)  z
635                    a (beta_incomplete_regularized(a, b, z) - ------------)
636                                                              a beta(a, b)
637                  - -------------------------------------------------------
638                                             b + a
639
640 -- Funci�n: beta_incomplete_generalized (<a>, <b>, <z1>, <z2>)
641     La definici�n b�sica de la funci�n beta incompleta generalizada es
642
643     The basic definition of the generalized incomplete beta function is
644
645                                z2
646                               /
647                               [          b - 1  a - 1
648                               I   (1 - t)      t      dt
649                               ]
650                               /
651                                z1
652
653     Maxima simplifica 'beta_incomplete_regularized' para <a> y <b>
654     enteros positivos.
655
656     Para realpart(a)>0 y z1=0 o z2=0, Maxima reduce
657     'beta_incomplete_generalized' a 'beta_incomplete'.  Para
658     realpart(b)>0 y z1=1 o <z2=1>, Maxima reduce a una expresi�n con
659     'beta' y 'beta_incomplete'.
660
661     Maxima eval�a 'beta_incomplete_generalized' num�ricamente para
662     valores reales y complejos en forma decimal y big float.
663
664     Si 'beta_expand' vale 'true', Maxima expande
665     'beta_incomplete_generalized' para los argumentos a+n y a-n, siendo
666     <n> entero positivo.
667
668     Maxima conoce las derivadas de 'beta_incomplete_generalized' con
669     respecto a las variables <a>, <b>, <z1> y <z2>, as� como la
670     integral respecto de las variables <z1> y <z2>.
671
672     Ejemplos:
673
674     Maxima simplifica 'beta_incomplete_generalized' para <a> y <b>
675     enteros positivos:
676          (%i1) beta_incomplete_generalized(2,b,z1,z2);
677                                    b                      b
678                            (1 - z1)  (b z1 + 1) - (1 - z2)  (b z2 + 1)
679          (%o1)             -------------------------------------------
680                                             b (b + 1)
681
682          (%i2) beta_incomplete_generalized(a,2,z1,z2);
683                                               a                      a
684                            (a (1 - z2) + 1) z2  - (a (1 - z1) + 1) z1
685          (%o2)             -------------------------------------------
686                                             a (a + 1)
687
688          (%i3) beta_incomplete_generalized(3,2,z1,z2);
689                            2      2                       2      2
690                    (1 - z1)  (3 z1  + 2 z1 + 1) - (1 - z2)  (3 z2  + 2 z2 + 1)
691          (%o3)     -----------------------------------------------------------
692                                                12
693
694     Simplificaci�n para los valores z1=0, z2=0, z1=1 o z2=1:
695          (%i4) assume(a > 0, b > 0)$
696          (%i5) beta_incomplete_generalized(a,b,z1,0);
697          (%o5)                    - beta_incomplete(a, b, z1)
698
699          (%i6) beta_incomplete_generalized(a,b,0,z2);
700          (%o6)                    - beta_incomplete(a, b, z2)
701
702          (%i7) beta_incomplete_generalized(a,b,z1,1);
703          (%o7)              beta(a, b) - beta_incomplete(a, b, z1)
704
705          (%i8) beta_incomplete_generalized(a,b,1,z2);
706          (%o8)              beta_incomplete(a, b, z2) - beta(a, b)
707
708     Evaluaci�n num�rica para argumentos reales, tanto con float
709     (precisi�n doble) como big float (precisi�n arbitraria):
710          (%i9) beta_incomplete_generalized(1/2,3/2,0.25,0.31);
711          (%o9)                        .09638178086368676
712
713          (%i10) fpprec:32$
714          (%i10) beta_incomplete_generalized(1/2,3/2,0.25,0.31b0);
715          (%o10)               9.6381780863686935309170054689964b-2
716
717     Evaluaci�n num�rica para argumentos complejos, tanto con float
718     (precisi�n doble) como big float (precisi�n arbitraria):
719          (%i11) beta_incomplete_generalized(1/2+%i,3/2+%i,0.25,0.31);
720          (%o11)           - .09625463003205376 %i - .003323847735353769
721          (%i12) fpprec:20$
722          (%i13) beta_incomplete_generalized(1/2+%i,3/2+%i,0.25,0.31b0);
723          (%o13)     - 9.6254630032054178691b-2 %i - 3.3238477353543591914b-3
724
725     Expansi�n para a+n o a-n, siendo <n> entero positivo con
726     'beta_expand' igual 'true':
727          (%i14) beta_expand:true$
728          (%i15) beta_incomplete_generalized(a+1,b,z1,z2);
729                         b   a           b   a
730                 (1 - z1)  z1  - (1 - z2)  z2
731          (%o15) -----------------------------
732                             b + a
733                                      a beta_incomplete_generalized(a, b, z1, z2)
734                                    + -------------------------------------------
735                                                         b + a
736
737          (%i16) beta_incomplete_generalized(a-1,b,z1,z2);
738                 beta_incomplete_generalized(a, b, z1, z2) (- b - a + 1)
739          (%o16) -------------------------------------------------------
740                                          1 - a
741                                                    b   a - 1           b   a - 1
742                                            (1 - z2)  z2      - (1 - z1)  z1
743                                          - -------------------------------------
744                                                            1 - a
745
746     Derivada respecto de la variable <z1> e integrales respecto de <z1>
747     y <z2>:
748          (%i17) diff(beta_incomplete_generalized(a,b,z1,z2),z1);
749                                                b - 1   a - 1
750          (%o17)                      - (1 - z1)      z1
751
752          (%i18) integrate(beta_incomplete_generalized(a,b,z1,z2),z1);
753          (%o18) beta_incomplete_generalized(a, b, z1, z2) z1
754                                                  + beta_incomplete(a + 1, b, z1)
755
756          (%i19) integrate(beta_incomplete_generalized(a,b,z1,z2),z2);
757          (%o19) beta_incomplete_generalized(a, b, z1, z2) z2
758                                                  - beta_incomplete(a + 1, b, z2)
759
760 -- Variable opcional: beta_expand
761     Valor por defecto: false
762
763     Si 'beta_expand' vale 'true', 'beta(a,b)' y sus funciones
764     relacionadas se expanden para argumentos del tipo a+n o a-n, siendo
765     n un n�mero entero.
766
767 -- Variable opcional: beta_args_sum_to_integer
768     Valor por defecto: false
769
770     Si 'beta_args_sum_to_integer' vale 'true', Maxima simplifica
771     'beta(a,b)' cuando la suma de los argumentos <a> y <b> sea un
772     entero.
773
774 -- Funci�n: psi [<n>](<x>)
775
776     Es la derivada de 'log (gamma (<x>))' de orden '<n>+1', de tal
777     manera que 'psi[0](<x>)' es la primera derivada, 'psi[1](<x>)' la
778     segunda derivada y as� sucesivamente.
779
780     En general, Maxima no sabe c�mo calcular valores num�ricos de
781     'psi', pero s� conoce el valor exacto para algunos argumentos
782     racionales.  Existen algunas variables globales para controlar en
783     qu� rangos racionales debe devolver 'psi' resultados exactos, si
784     ello es posible.  V�anse las descripciones de 'maxpsiposint',
785     'maxpsinegint', 'maxpsifracnum' y 'maxpsifracdenom'.  En resumen,
786     <x> debe alcanzar un valor entre 'maxpsinegint' y 'maxpsiposint'.
787     Si el valor absoluto de la parte fraccional de <x> es racional y
788     tiene un numerador menor que 'maxpsifracnum' y un denominador menor
789     que 'maxpsifracdenom', la funci�n 'psi' devolver� un valor exacto.
790
791     La funci�n 'bfpsi' del paquete 'bffac' puede calcular valores
792     num�ricos.
793
794 -- Variable opcional: maxpsiposint
795     Valor por defecto: 20
796
797     La variable 'maxpsiposint' guarda el mayor valor positivo para el
798     que 'psi[n](x)' intentar� calcular un valor exacto.
799
800 -- Variable opcional: maxpsinegint
801     Valor por defecto: -10
802
803     La variable 'maxpsinegint' guarda el menor valor negativo para el
804     que 'psi[n](x)' intentar� calcular un valor exacto.  Si <x> es
805     menor que 'maxnegint', 'psi[n](<x>)' no devolver� una respuesta
806     simplificada, aunque supiese c�mo hacerlo.
807
808 -- Variable opcional: maxpsifracnum
809     Valor por defecto: 6
810
811     Sea <x> un n�mero racional menor que la unidad de la forma 'p/q'.
812     Si 'p' es mayor que 'maxpsifracnum', entonces 'psi[<n>](<x>)' no
813     devolver� una respuesta simplificada.
814
815 -- Variable opcional: maxpsifracdenom
816     Valor por defecto: 6
817
818     Sea <x> un n�mero racional menor que la unidad de la forma 'p/q'.
819     Si 'q' es mayor que 'maxpsifracnum', entonces 'psi[<n>](<x>)' no
820     devolver� una respuesta simplificada.
821
822 -- Funci�n: makefact (<expr>)
823     Transforma las funciones 'binomial', 'gamma' y 'beta' que aparecen
824     en <expr> en su notaci�n factorial.
825
826     V�ase tambi�n 'makegamma'.
827
828 -- Funci�n: numfactor (<expr>)
829     Devuelve el factor num�rico que multiplica a la expresi�n <expr>,
830     la cual debe tener un �nico t�rmino.
831
832          (%i1) gamma (7/2);
833                                    15 sqrt(%pi)
834          (%o1)                     ------------
835                                         8
836          (%i2) numfactor (%);
837                                         15
838          (%o2)                          --
839                                         8
840
841
842File: maxima.info,  Node: Integral exponencial,  Next: Funci�n de error,  Prev: Funciones Gamma y factorial,  Up: Funciones Especiales
843
84415.5 Integral exponencial
845=========================
846
847La integral exponencial y sus funciones relacionadas se definen en el
848cap�tulo 5 de Abramowitz y Stegun, Handbook of Mathematical Functions.
849
850 -- Funci�n: expintegral_e1 (<z>)
851     La integral exponencial E1(z) (A&S 5.1.1)
852
853 -- Funci�n: expintegral_ei (<z>)
854     La integral exponencial Ei(z) (A&S 5.1.2)
855
856 -- Funci�n: expintegral_li (<z>)
857     La integral exponencial Li(z) (A&S 5.1.3)
858
859 -- Funci�n: expintegral_e (<n>,<z>)
860     La integral exponencial En(z) (A&S 5.1.4)
861
862 -- Funci�n: expintegral_si (<z>)
863     La integral exponencial Si(z) (A&S 5.2.1)
864
865 -- Funci�n: expintegral_ci (<z>)
866     La integral exponencial Ci(z) (A&S 5.2.2)
867
868 -- Funci�n: expintegral_shi (<z>)
869     La integral exponencial Shi(z) (A&S 5.2.3)
870
871 -- Funci�n: expintegral_chi (<z>)
872     La integral exponencial Chi(z) (A&S 5.2.4)
873
874 -- Option variable: expintrep
875     Valor por defecto: false
876
877     Transforma la representaci�n de la integral exponencial en t�rminos
878     de las funciones 'gamma_incomplete', 'expintegral_e1',
879     'expintegral_ei', 'expintegral_li', 'expintegral_trig' y
880     'expintegral_hyp'.
881
882 -- Option variable: expintexpand
883     Valor por defecto: false
884
885     Expande la integral exponencial E[n](z) para valores medios de la
886     integral en t�rminos de las funciones Erfc o Erf y para positivos
887     enteros en t�rminos de Ei .
888
889
890File: maxima.info,  Node: Funci�n de error,  Next: Funciones de Struve,  Prev: Integral exponencial,  Up: Funciones Especiales
891
89215.6 Funci�n de error
893=====================
894
895La funci�n de error y sus asociadas se definen en el cap�tulo 7 de
896Abramowitz y Stegun, Handbook of Mathematical Functions.
897
898 -- Funci�n: erf (<z>)
899     Funci�n de error erf(z) (A&S 7.1.1)
900
901     V�ase tambi�n 'erfflag'.
902
903 -- Funci�n: erfc (<z>)
904     Complemento de la funci�n de error erfc(z) (A&S 7.1.2)
905
906     'erfc(z) = 1-erf(z)'
907
908 -- Funci�n: erfi (<z>)
909     Funci�n de error imaginaria.
910
911     'erfi(z) = -%i*erf(%i*z)'
912
913 -- Funci�n: erf_generalized (<z1>,<z2>)
914     Funci�n de error generalizada Erf(z1,z2)
915
916 -- Funci�n: fresnel_c (<z>)
917     Integral de Fresnel 'C(z) = integrate(cos((%pi/2)*t^2),t,0,z)'.
918     (A&S 7.3.1)
919
920     La simplificaci�n 'fresnel_c(-x) = -fresnel_c(x)' se aplica cuando
921     la variable global 'trigsign' vale 'true'.
922
923     La simplificaci�n 'fresnel_s(%i*x) = -%i*fresnel_s(x)' se aplica
924     cuando la variable global '%iargs' vale 'true'.
925
926     V�anse tambi�n 'erf_representation' y
927     'hypergeometric_representation'.
928
929 -- Funci�n: fresnel_s (<z>)
930     Integral de Fresnel S(z) = integrate(sin((%pi/2)*t^2),t,0,z).  (A&S
931     7.3.2)
932
933     La simplificaci�n fresnel_s(-x) = -fresnel_s(x) se aplica cuando la
934     variable global 'trigsign' vale 'true'.
935
936     La simplificaci�n fresnel_s(%i*x) = %i*fresnel_s(x) se aplica
937     cuando la variable global '%iargs' vale 'true'.
938
939     V�anse tambi�n 'erf_representation' y
940     'hypergeometric_representation'.
941
942 -- Variable opcional: erf_representation
943     Valor por defecto: false
944
945     Cuando valga 'true' erfc, erfi, erf_generalized, fresnel_s y
946     fresnel_c se transforman a erf.
947
948 -- Variable opcional: hypergeometric_representation
949     Valor por defecto: false
950
951     Permite obtener la representaci�n hipergeom�trica de las funciones
952     fresnel_s y fresnel_c.
953
954
955File: maxima.info,  Node: Funciones de Struve,  Next: Funciones hipergeom�tricas,  Prev: Funci�n de error,  Up: Funciones Especiales
956
95715.7 Funciones de Struve
958========================
959
960Las funciones de Struve se definen en el cap�tulo 12 de Abramowitz y
961Stegun, Handbook of Mathematical Functions.
962
963 -- Funci�n: struve_h (<v>, <z>)
964     Funci�n H de Struve de orden <v> y argumento <z>, (A&S 12.1.1).
965
966 -- Funci�n: struve_l (<v>, <z>)
967     Funci�n L modificada de Struve de orden <v> y argumento <z>, (A&S
968     12.2.1).
969
970
971File: maxima.info,  Node: Funciones hipergeom�tricas,  Next: Funciones de cilindro parab�lico,  Prev: Funciones de Struve,  Up: Funciones Especiales
972
97315.8 Funciones hipergeom�tricas
974===============================
975
976Las funciones hipergeom�tricas se definen en los cap�tulos 13 y 15 de
977Abramowitz y Stegun, Handbook of Mathematical Functions.
978
979Maxima tiene un soporte limitado sobre estas funciones, que pueden
980aparecer en resultados devueltos por 'hgfred'.
981
982 -- Funci�n: %m [<k>,<u>] (<z>)
983     Funci�n M de Whittaker 'M[k,u](z) =
984     exp(-z/2)*z^(1/2+u)*M(1/2+u-k,1+2*u,z)'.  (A&S 13.1.32)
985
986 -- Funci�n: %w [<k>,<u>] (<z>)
987     Funci�n W de Whittaker.  (A&S 13.1.33)
988
989 -- Funci�n: %f [<p>,<q>] (<[a],[b],z>)
990     Es la funci�n hipergeom�trica pFq(a1,a2,..ap;b1,b2,..bq;z), donde
991     'a' es una lista de longitud 'p' y 'b' otra lista de longitud 'q'.
992
993 -- Funci�n: hypergeometric ([<a1>, ..., <ap>],[<b1>, ... ,<bq>], x)
994     Es la funci�n hipergeom�trica.  A diferencia de la funci�n
995     hipergeom�trica '%f' de Maxima, la funci�n 'hypergeometric' es
996     simplificadora; adem�s, 'hypergeometric' soporta la evaluaci�n en
997     doble (float) y gran (bigfloat) precisi�n.  La evaluaci�n num�rica
998     fuera del c�rculo unidad no est� en general soportada, pero s� en
999     el caso de la funci�n hipergeom�trica de Gauss, cuando p = 2 y q =
1000     1.
1001
1002     Si la variable opcional 'expand_hypergeometric' vale 'true', (el
1003     valor por defecto es 'false') y uno de los argumentos entr 'a1' y
1004     'ap' es entero negativo (caso polinomial), entonces
1005     'hypergeometric' devuelve un polinomio expandido.
1006
1007     Ejemplos:
1008          (%i1)  hypergeometric([],[],x);
1009          (%o1) %e^x
1010
1011     Los polinomios se expanden autom�ticamente cuando
1012     'expand_hypergeometric' vale 'true'.
1013
1014          (%i2) hypergeometric([-3],[7],x);
1015          (%o2) hypergeometric([-3],[7],x)
1016
1017          (%i3) hypergeometric([-3],[7],x), expand_hypergeometric : true;
1018          (%o3) -x^3/504+3*x^2/56-3*x/7+1
1019
1020     Se soporta la evaluaci�n en doble (float) y gran (bigfloat)
1021     precisi�n:
1022
1023          (%i4) hypergeometric([5.1],[7.1 + %i],0.42);
1024          (%o4)       1.346250786375334 - 0.0559061414208204 %i
1025          (%i5) hypergeometric([5,6],[8], 5.7 - %i);
1026          (%o5)     .007375824009774946 - .001049813688578674 %i
1027          (%i6) hypergeometric([5,6],[8], 5.7b0 - %i), fpprec : 30;
1028          (%o6) 7.37582400977494674506442010824b-3
1029                                    - 1.04981368857867315858055393376b-3 %i
1030
1031
1032File: maxima.info,  Node: Funciones de cilindro parab�lico,  Next: Funciones y variables para las funciones especiales,  Prev: Funciones hipergeom�tricas,  Up: Funciones Especiales
1033
103415.9 Funciones de cilindro parab�lico
1035=====================================
1036
1037Las funciones de cilindro parab�lico se definen en el cap�tulo 19 de
1038Abramowitz y Stegun, Handbook of Mathematical Functions.
1039
1040Maxima tiene un soporte limitado sobre estas funciones, que pueden
1041aparecer en resultados devueltos por 'hgfred'.
1042
1043 -- Funci�n: parabolic_cylinder_d (<v>, <z>)
1044     Funci�n de cilindro parab�lico 'parabolic_cylinder_d(v,z)'.  (A&s
1045     19.3.1)
1046
1047
1048File: maxima.info,  Node: Funciones y variables para las funciones especiales,  Prev: Funciones de cilindro parab�lico,  Up: Funciones Especiales
1049
105015.10 Funciones y variables para las funciones especiales
1051=========================================================
1052
1053 -- Funci�n: specint (exp(- s*<t>) * <expr>, <t>)
1054
1055     Calcula la transformada de Laplace de <expr> respecto de la
1056     variable <t>.  El integrando <expr> puede contener funciones
1057     especiales.
1058
1059     La funci�n 'specint' admite las funciones especiales siguientes: la
1060     gamma incompleta, las funciones de error (pero no 'erfi', siendo
1061     sencillo transformar 'erfi' en la funci�n de error 'erf'),
1062     integrales exponenciales, funciones de Bessel (incluidos productos
1063     de funciones de Bessel), funciones de Hankel, de Hermite y los
1064     polinomios de Laguerre.
1065
1066     Adem�s, 'specint' tambi�n admite la funci�n hipergeom�trica
1067     '%f[p,q]([],[],z)', la funci�n de Whittaker de primera especie
1068     '%m[u,k](z)' y la de segunda especie '%w[u,k](z)'.
1069
1070     El resultado puede darse en t�rminos de funciones especiales y es
1071     posible que incluya tambi�n funciones hipergeom�tricas sin
1072     simplificar.
1073
1074     Cuando 'laplace' es incapaz de calcular la transformada de Laplace,
1075     entonces llama a la funci�n 'specint'.  Puesto que 'laplace' tiene
1076     programadas m�s reglas para calcular transformadas de Laplace, es
1077     preferible utilizar 'laplace' en lugar de 'specint'.
1078
1079     La ejecuci�n de 'demo(hypgeo)' muestra algunos ejemplos de
1080     transformadas de Laplace calculadas con 'specint'.
1081
1082     Ejemplos:
1083
1084          (%i1) assume (p > 0, a > 0)$
1085          (%i2) specint (t^(1/2) * exp(-a*t/4) * exp(-p*t), t);
1086                                     sqrt(%pi)
1087          (%o2)                     ------------
1088                                           a 3/2
1089                                    2 (p + -)
1090                                           4
1091          (%i3) specint (t^(1/2) * bessel_j(1, 2 * a^(1/2) * t^(1/2))
1092                        * exp(-p*t), t);
1093                                             - a/p
1094                                   sqrt(a) %e
1095          (%o3)                    ---------------
1096                                          2
1097                                         p
1098
1099     Ejemplos para integrales exponenciales:
1100
1101          (%i4) assume(s>0,a>0,s-a>0)$
1102          (%i5) ratsimp(specint(%e^(a*t)
1103                                *(log(a)+expintegral_e1(a*t))*%e^(-s*t),t));
1104                                       log(s)
1105          (%o5)                        ------
1106                                       s - a
1107          (%i6) logarc:true$
1108
1109          (%i7) gamma_expand:true$
1110
1111          radcan(specint((cos(t)*expintegral_si(t)
1112                               -sin(t)*expintegral_ci(t))*%e^(-s*t),t));
1113                                       log(s)
1114          (%o8)                        ------
1115                                        2
1116                                       s  + 1
1117          ratsimp(specint((2*t*log(a)+2/a*sin(a*t)
1118                                -2*t*expintegral_ci(a*t))*%e^(-s*t),t));
1119                                         2    2
1120                                    log(s  + a )
1121          (%o9)                     ------------
1122                                          2
1123                                         s
1124
1125     Resultados cuando se utiliza la expansi�n de 'gamma_incomplete' y
1126     se cambia la representaci�n de 'expintegral_e1':
1127
1128          (%i10) assume(s>0)$
1129          (%i11) specint(1/sqrt(%pi*t)*unit_step(t-k)*%e^(-s*t),t);
1130                                                      1
1131                                      gamma_incomplete(-, k s)
1132                                                      2
1133          (%o11)                      ------------------------
1134                                         sqrt(%pi) sqrt(s)
1135
1136          (%i12) gamma_expand:true$
1137          (%i13) specint(1/sqrt(%pi*t)*unit_step(t-k)*%e^(-s*t),t);
1138                                        erfc(sqrt(k) sqrt(s))
1139          (%o13)                        ---------------------
1140                                               sqrt(s)
1141
1142          (%i14) expintrep:expintegral_e1$
1143          (%i15) ratsimp(specint(1/(t+a)^2*%e^(-s*t),t));
1144                                        a s
1145                                  a s %e    expintegral_e1(a s) - 1
1146          (%o15)                - ---------------------------------
1147                                                  a
1148
1149 -- Funci�n: hgfred (<a>, <b>, <t>)
1150
1151     Simplifica la funci�n hipergeom�trica generalizada en t�rminos de
1152     otras funciones m�s sencillas.  <a> es una lista de par�metros del
1153     numerador y <b> lo es de par�metros del denominador.
1154
1155     En caso de que 'hgfred' no pueda simplificar la funci�n
1156     hipergeom�trica devolver� una expresi�n de la forma '%f[p,q]([a],
1157     [b], x)', siendo <p> el n�mero de elementos de <a> y <q> el de <b>.
1158     Esta es la funci�n hipergeom�trica generalizada 'pFq'.
1159
1160          (%i1) assume(not(equal(z,0)));
1161          (%o1)                          [notequal(z, 0)]
1162          (%i2) hgfred([v+1/2],[2*v+1],2*%i*z);
1163
1164                               v/2                               %i z
1165                              4    bessel_j(v, z) gamma(v + 1) %e
1166          (%o2)               ---------------------------------------
1167                                                 v
1168                                                z
1169          (%i3) hgfred([1,1],[2],z);
1170
1171                                             log(1 - z)
1172          (%o3)                            - ----------
1173                                                 z
1174          (%i4) hgfred([a,a+1/2],[3/2],z^2);
1175
1176                                         1 - 2 a          1 - 2 a
1177                                  (z + 1)        - (1 - z)
1178          (%o4)                   -------------------------------
1179                                           2 (1 - 2 a) z
1180
1181
1182     Tal como muestra el siguiente ejemplo, puede ser de utilidad cargar
1183     tambi�n el paquete 'orthopoly'.  N�tese que <L> es el polinomio
1184     generalizado de Laguerre.
1185
1186          (%i5) load(orthopoly)$
1187          (%i6) hgfred([-2],[a],z);
1188
1189                                              (a - 1)
1190                                           2 L       (z)
1191                                              2
1192          (%o6)                            -------------
1193                                             a (a + 1)
1194          (%i7) ev(%);
1195
1196                                            2
1197                                           z        2 z
1198          (%o7)                         --------- - --- + 1
1199                                        a (a + 1)    a
1200
1201
1202 -- Funci�n: lambert_w (<z>)
1203     Rama principal de la funci�n W de Lambert, soluci�n de la ecuaci�n
1204     'z = W(z) * exp(W(z))'.  (DLMF 4.13)
1205
1206 -- Funci�n: generalized_lambert_w (<k>, <z>)
1207     <k>-�sima rama de la funci�n W de Lambert's, W(z), soluci�n de 'z =
1208     W(z) * exp(W(z))'.  (DLMF 4.13)
1209
1210     La rama principal, representada por Wp(z) en DLMF, es 'lambert_w(z)
1211     = generalized_lambert_w(0,z)'.
1212
1213     La otra rama con valores reales, representada por Wm(z) en DLMF, es
1214     'generalized_lambert_w(-1,z)'.
1215
1216 -- Funci�n: nzeta (<z>)
1217     Funci�n de dispersi�n del plasma.  'nzeta(z) =
1218     %i*sqrt(%pi)*exp(-z^2)*(1-erf(-%i*z))'
1219
1220 -- Funci�n: nzetar (<z>)
1221     Devuelve 'realpart(nzeta(z))'.
1222
1223 -- Funci�n: nzetai (<z>)
1224     Devuelve 'imagpart(nzeta(z))'.
1225
1226
1227File: maxima.info,  Node: Funciones el�pticas,  Next: L�mites,  Prev: Funciones Especiales,  Up: Top
1228
122916 Funciones el�pticas
1230**********************
1231
1232* Menu:
1233
1234* Introducci�n a las funciones e integrales el�pticas::
1235* Funciones y variables para funciones el�pticas::
1236* Funciones y variables para integrales el�pticas::
1237
1238
1239File: maxima.info,  Node: Introducci�n a las funciones e integrales el�pticas,  Next: Funciones y variables para funciones el�pticas,  Prev: Funciones el�pticas,  Up: Funciones el�pticas
1240
124116.1 Introducci�n a las funciones e integrales el�pticas
1242========================================================
1243
1244Maxima da soporte para las funciones el�pticas jacobianas y para las
1245integrales el�pticas completas e incompletas.  Esto incluye la
1246manipulaci�n simb�lica de estas funciones y su evaluaci�n num�rica.  Las
1247definiciones de estas funciones y de muchas de sus propiedades se pueden
1248encontrar en Abramowitz y Stegun, cap�tulos 16-17, que es la fuente
1249principal utilizada para su programaci�n en Maxima, aunque existen
1250algunas diferencias.
1251
1252En particular, todas las funciones e integrales el�pticas utilizan el
1253par�mero m en lugar del m�dulo k o del �ngulo alfa.  Esta es una de las
1254diferencias con Abramowitz y Stegun, que utilizan el �ngulo para las
1255funciones el�pticas.  Las siguientes relaciones son v�lidas:
1256
1257m = k^2 y k = sin(alfa).
1258
1259Las funciones e integrales el�pticas en Maxima tienen como objetivo
1260primordial dar soporte al c�lculo simb�lico, de ah� que tambi�n est�n
1261incluidas la mayor�a de las derivadas e integrales asociadas a estas
1262funciones.  No obstante lo anterior, si los argumentos dados a las
1263funciones son decimales en coma flotante, los resultados tambi�n ser�n
1264decimales.
1265
1266Sin embargo, la mayor�a de las propiedades no realacionadas con las
1267derivadas de las funciones e integrales el�pticas todav�a no han sido
1268programadas en Maxima.
1269
1270Algunos ejemplos de funciones el�pticas:
1271     (%i1) jacobi_sn (u, m);
1272     (%o1)                    jacobi_sn(u, m)
1273     (%i2) jacobi_sn (u, 1);
1274     (%o2)                        tanh(u)
1275     (%i3) jacobi_sn (u, 0);
1276     (%o3)                        sin(u)
1277     (%i4) diff (jacobi_sn (u, m), u);
1278     (%o4)            jacobi_cn(u, m) jacobi_dn(u, m)
1279     (%i5) diff (jacobi_sn (u, m), m);
1280     (%o5) jacobi_cn(u, m) jacobi_dn(u, m)
1281
1282           elliptic_e(asin(jacobi_sn(u, m)), m)
1283      (u - ------------------------------------)/(2 m)
1284                          1 - m
1285
1286                 2
1287        jacobi_cn (u, m) jacobi_sn(u, m)
1288      + --------------------------------
1289                   2 (1 - m)
1290
1291Algunos ejemplos de integrales el�pticas:
1292     (%i1) elliptic_f (phi, m);
1293     (%o1)                  elliptic_f(phi, m)
1294     (%i2) elliptic_f (phi, 0);
1295     (%o2)                          phi
1296     (%i3) elliptic_f (phi, 1);
1297                                    phi   %pi
1298     (%o3)                  log(tan(--- + ---))
1299                                     2     4
1300     (%i4) elliptic_e (phi, 1);
1301     (%o4)                       sin(phi)
1302     (%i5) elliptic_e (phi, 0);
1303     (%o5)                          phi
1304     (%i6) elliptic_kc (1/2);
1305                                          1
1306     (%o6)                    elliptic_kc(-)
1307                                          2
1308     (%i7) makegamma (%);
1309                                      2 1
1310                                 gamma (-)
1311                                        4
1312     (%o7)                      -----------
1313                                4 sqrt(%pi)
1314     (%i8) diff (elliptic_f (phi, m), phi);
1315                                     1
1316     (%o8)                 ---------------------
1317                                         2
1318                           sqrt(1 - m sin (phi))
1319     (%i9) diff (elliptic_f (phi, m), m);
1320            elliptic_e(phi, m) - (1 - m) elliptic_f(phi, m)
1321     (%o9) (-----------------------------------------------
1322                                   m
1323
1324                                      cos(phi) sin(phi)
1325                                  - ---------------------)/(2 (1 - m))
1326                                                  2
1327                                    sqrt(1 - m sin (phi))
1328
1329El paquete para funciones e integrales el�pticas fue programado por
1330Raymond Toy.  Se distribuye, igual que Maxima, bajo la General Public
1331License (GPL).
1332
1333
1334File: maxima.info,  Node: Funciones y variables para funciones el�pticas,  Next: Funciones y variables para integrales el�pticas,  Prev: Introducci�n a las funciones e integrales el�pticas,  Up: Funciones el�pticas
1335
133616.2 Funciones y variables para funciones el�pticas
1337===================================================
1338
1339 -- Funci�n: jacobi_sn (<u>, <m>)
1340     Funci�n el�ptica jacobiana sn(u,m).
1341
1342 -- Funci�n: jacobi_cn (<u>, <m>)
1343     Funci�n el�ptica jacobiana cn(u,m).
1344
1345 -- Funci�n: jacobi_dn (<u>, <m>)
1346     Funci�n el�ptica jacobiana dn(u,m).
1347
1348 -- Funci�n: jacobi_ns (<u>, <m>)
1349     Funci�n el�ptica jacobiana ns(u,m) = 1/sn(u,m).
1350
1351 -- Funci�n: jacobi_sc (<u>, <m>)
1352     Funci�n el�ptica jacobiana sc(u,m) = sn(u,m)/cn(u,m).
1353
1354 -- Funci�n: jacobi_sd (<u>, <m>)
1355     Funci�n el�ptica jacobiana sd(u,m) = sn(u,m)/dn(u,m).
1356
1357 -- Funci�n: jacobi_nc (<u>, <m>)
1358     Funci�n el�ptica jacobiana nc(u,m) = 1/cn(u,m).
1359
1360 -- Funci�n: jacobi_cs (<u>, <m>)
1361     Funci�n el�ptica jacobiana cs(u,m) = cn(u,m)/sn(u,m).
1362
1363 -- Funci�n: jacobi_cd (<u>, <m>)
1364     Funci�n el�ptica jacobiana cd(u,m) = cn(u,m)/dn(u,m).
1365
1366 -- Funci�n: jacobi_nd (<u>, <m>)
1367     Funci�n el�ptica jacobiana nc(u,m) = 1/cn(u,m).
1368
1369 -- Funci�n: jacobi_ds (<u>, <m>)
1370     Funci�n el�ptica jacobiana ds(u,m) = dn(u,m)/sn(u,m).
1371
1372 -- Funci�n: jacobi_dc (<u>, <m>)
1373     Funci�n el�ptica jacobiana dc(u,m) = dn(u,m)/cn(u,m).
1374
1375 -- Funci�n: inverse_jacobi_sn (<u>, <m>)
1376     Inversa de la funci�n el�ptica jacobiana sn(u,m).
1377
1378 -- Funci�n: inverse_jacobi_cn (<u>, <m>)
1379     Inversa de la funci�n el�ptica jacobiana cn(u,m).
1380
1381 -- Funci�n: inverse_jacobi_dn (<u>, <m>)
1382     Inversa de la funci�n el�ptica jacobiana dn(u,m).
1383
1384 -- Funci�n: inverse_jacobi_ns (<u>, <m>)
1385     Inversa de la funci�n el�ptica jacobiana ns(u,m).
1386
1387 -- Funci�n: inverse_jacobi_sc (<u>, <m>)
1388     Inversa de la funci�n el�ptica jacobiana sc(u,m).
1389
1390 -- Funci�n: inverse_jacobi_sd (<u>, <m>)
1391     Inversa de la funci�n el�ptica jacobiana sd(u,m).
1392
1393 -- Funci�n: inverse_jacobi_nc (<u>, <m>)
1394     Inversa de la funci�n el�ptica jacobiana nc(u,m).
1395
1396 -- Funci�n: inverse_jacobi_cs (<u>, <m>)
1397     Inversa de la funci�n el�ptica jacobiana cs(u,m).
1398
1399 -- Funci�n: inverse_jacobi_cd (<u>, <m>)
1400     Inversa de la funci�n el�ptica jacobiana cd(u,m).
1401
1402 -- Funci�n: inverse_jacobi_nd (<u>, <m>)
1403     Inversa de la funci�n el�ptica jacobiana nc(u,m).
1404
1405 -- Funci�n: inverse_jacobi_ds (<u>, <m>)
1406     Inversa de la funci�n el�ptica jacobiana ds(u,m).
1407
1408 -- Funci�n: inverse_jacobi_dc (<u>, <m>)
1409     Inversa de la funci�n el�ptica jacobiana dc(u,m).
1410
1411
1412File: maxima.info,  Node: Funciones y variables para integrales el�pticas,  Prev: Funciones y variables para funciones el�pticas,  Up: Funciones el�pticas
1413
141416.3 Funciones y variables para integrales el�pticas
1415====================================================
1416
1417 -- Funci�n: elliptic_f (<phi>, <m>)
1418     Integral el�ptica incompleta de primera especie, definida como
1419
1420     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, phi)
1421
1422     V�anse tambi�n 'elliptic_e' y 'elliptic_kc'.
1423
1424 -- Funci�n: elliptic_e (<phi>, <m>)
1425     Integral el�ptica incompleta de segunda especie, definida como
1426
1427     elliptic_e(phi, m) = integrate(sqrt(1 - m*sin(x)^2), x, 0, phi)
1428
1429     V�anse tambi�n 'elliptic_e' y 'elliptic_ec'.
1430
1431 -- Funci�n: elliptic_eu (<u>, <m>)
1432     Integral el�ptica incompleta de segunda especie, definida como
1433
1434     integrate(dn(v,m)^2,v,0,u) = integrate(sqrt(1-m*t^2)/sqrt(1-t^2),
1435     t, 0, tau)
1436
1437     donde tau = sn(u,m).
1438
1439     Esto se relaciona con 'elliptic_e' mediante
1440
1441     elliptic_eu(u, m) = elliptic_e(asin(sn(u,m)),m)
1442
1443     V�ase tambi�n 'elliptic_e'.
1444
1445 -- Funci�n: elliptic_pi (<n>, <phi>, <m>)
1446     Integral el�ptica incompleta de tercera especie, definida como
1447
1448     integrate(1/(1-n*sin(x)^2)/sqrt(1 - m*sin(x)^2), x, 0, phi)
1449
1450     Maxima s�lo conoce la derivada respecto de phi.
1451
1452 -- Funci�n: elliptic_kc (<m>)
1453     Integral el�ptica completa de primera especie, definida como
1454
1455     integrate(1/sqrt(1 - m*sin(x)^2), x, 0, %pi/2)
1456
1457     Para algunos valores de m, se conoce el valor de la integral en
1458     t�rminos de la funci�n Gamma.  H�gase uso de 'makegamma' para
1459     realizar su c�lculo.
1460
1461 -- Funci�n: elliptic_ec (<m>)
1462     Integral el�ptica completa de segunda especie, definida como
1463
1464     integrate(sqrt(1 - m*sin(x)^2), x, 0, %pi/2)
1465
1466     Para algunos valores de m, se conoce el valor de la integral en
1467     t�rminos de la funci�n Gamma.  H�gase uso de 'makegamma' para
1468     realizar su c�lculo.
1469
1470
1471File: maxima.info,  Node: L�mites,  Next: Diferenciaci�n,  Prev: Funciones el�pticas,  Up: Top
1472
147317 L�mites
1474**********
1475
1476* Menu:
1477
1478* Funciones y variables para l�mites::
1479
1480
1481File: maxima.info,  Node: Funciones y variables para l�mites,  Prev: L�mites,  Up: L�mites
1482
148317.1 Funciones y variables para l�mites
1484=======================================
1485
1486 -- Variable optativa: lhospitallim
1487     Valor por defecto: 4
1488
1489     Es el n�mero m�ximo de veces que la regla de L'Hopital es aplicada
1490     en la funci�n 'limit', evitando bucles infinitos al iterar la regla
1491     en casos como 'limit (cot(x)/csc(x), x, 0)'.
1492
1493 -- Funci�n: limit (<expr>, <x>, <val>, <dir>)
1494 -- Funci�n: limit (<expr>, <x>, <val>)
1495 -- Funci�n: limit (<expr>)
1496     Calcula el l�mite de <expr> cuando la variable real <x> se aproxima
1497     al valor <val> desde la direcci�n <dir>.  El argumento <dir> puede
1498     ser el valor 'plus' para un l�mite por la derecha, 'minus' para un
1499     l�mite por la izquierda o simplemente se omite para indicar un
1500     l�mite en ambos sentidos.
1501
1502     La funci�n 'limit' utiliza los s�mbolos especiales siguientes:
1503     'inf' (m�s infinito) y 'minf' (menos infinito).  En el resultado
1504     tambi�n puede hacer uso de 'und' (indefinido), 'ind' (indefinido
1505     pero acotado) y 'infinity' (infinito complejo).
1506
1507     'infinity' (infinito complejo) es el resultado que se obtiene
1508     cuando el l�mite del m�dulo de la expresi�n es infinito positivo,
1509     pero el propio l�mite de la expresi�n no es infinito positivo ni
1510     negativo.  Esto sucede, por ejemplo, cuando el l�mite del argumento
1511     complejo es una constante, como en 'limit(log(x), x, minf)', o
1512     cuando el argumento complejo oscila, como en 'limit((-2)^x, x,
1513     inf)', o en aquellos casos en los que el argumento complejo es
1514     diferente por cualquiera de los lados de un l�mite, como en
1515     'limit(1/x, x, 0)' o 'limit(log(x), x, 0)'.
1516
1517     La variable 'lhospitallim' guarda el n�mero m�ximo de veces que la
1518     regla de L'Hopital es aplicada en la funci�n 'limit', evitando
1519     bucles infinitos al iterar la regla en casos como 'limit
1520     (cot(x)/csc(x), x, 0)'.
1521
1522     Si la variable 'tlimswitch' vale 'true', har� que la funci�n
1523     'limit' utilice desarrollos de Taylor siempre que le sea posible.
1524
1525     La variable 'limsubst' evita que la funci�n 'limit' realice
1526     sustituciones sobre formas desconocidas, a fin de evitar fallos
1527     tales como que 'limit (f(n)/f(n+1), n, inf)' devuelva 1.  D�ndole a
1528     'limsubst' el valor 'true' se permitir�n tales sustituciones.
1529
1530     La funci�n 'limit' con un solo argumento se utiliza frecuentemente
1531     para simplificar expresiones constantes, como por ejemplo 'limit
1532     (inf-1)'.
1533
1534     La instrucci�n 'example (limit)' muestra algunos ejemplos.
1535
1536     Para informaci�n sobre el m�todo utilizado v�ase Wang, P.,
1537     "Evaluation of Definite Integrals by Symbolic Manipulation", Ph.D.
1538     thesis, MAC TR-92, October 1971.
1539
1540 -- Variable optativa: limsubst
1541     Valor por defecto: 'false'
1542
1543     La variable 'limsubst' evita que la funci�n 'limit' realice
1544     sustituciones sobre formas desconocidas, a fin de evitar fallos
1545     tales como que 'limit (f(n)/f(n+1), n, inf)' devuelva 1.  D�ndole a
1546     'limsubst' el valor 'true' se permitir�n tales sustituciones.
1547
1548 -- Funci�n: tlimit (<expr>, <x>, <val>, <dir>)
1549 -- Funci�n: tlimit (<expr>, <x>, <val>)
1550 -- Funci�n: tlimit (<expr>)
1551     Calcula el l�mite del desarrollo de Taylor de la expresi�n 'expr'
1552     de variable 'x' en el punto 'val' en la direcci�n 'dir'.
1553
1554 -- Variable optativa: tlimswitch
1555     Valor por defecto: 'true'
1556
1557     Si 'tlimswitch' vale 'true', la funci�n 'limit' utilizar� un
1558     desarrollo de Taylor si el l�mite de la expresi�n dada no se puede
1559     calcular directamente.  Esto permite el c�lculo de l�mites como
1560     'limit(x/(x-1)-1/log(x),x,1,plus)'.  Si 'tlimswitch' vale 'false' y
1561     el l�mite de la expresi�n no se puede calcular directamente, la
1562     funci�n 'limit' devolver� una expresi�n sin evaluar.
1563
1564
1565File: maxima.info,  Node: Diferenciaci�n,  Next: Integraci�n,  Prev: L�mites,  Up: Top
1566
156718 Diferenciaci�n
1568*****************
1569
1570* Menu:
1571
1572* Funciones y variables para la diferenciaci�n::
1573
1574
1575File: maxima.info,  Node: Funciones y variables para la diferenciaci�n,  Prev: Diferenciaci�n,  Up: Diferenciaci�n
1576
157718.1 Funciones y variables para la diferenciaci�n
1578=================================================
1579
1580 -- Funci�n: antid (<expr>, <x>, <u(x)>)
1581     Devuelve una lista con dos elementos, de manera que se pueda
1582     calcular la antiderivada de <expr> respecto de <x> a partir de la
1583     lista.  La expresi�n <expr> puede contener una funci�n no
1584     especificada <u> y sus derivadas.
1585
1586     Sea <L> la lista con dos elementos que devuelve la funci�n 'antid'.
1587     Entonces, '<L>[1] + 'integrate (<L>[2], <x>)' es una antiderivada
1588     de <expr> con respecto a <x>.
1589
1590     Si la ejecuci�n de 'antid' resulta exitosa, el segundo elemento de
1591     la lista retornada es cero.  En caso contrario, el segundo elemento
1592     es distinto de cero y el primero puede ser nulo o no.  Si 'antid'
1593     no es capaz de hacer ning�n progreso, el primer elemento es nulo y
1594     el segundo no nulo.
1595
1596     Es necesario ejecutar 'load ("antid")' para cargar esta funci�n.
1597     El paquete 'antid' define tambi�n las funciones 'nonzeroandfreeof'
1598     y 'linear'.
1599
1600     La funci�n 'antid' est� relacionada con 'antidiff' como se indica a
1601     continuaci�n.  Sea <L> la lista devuelta por la funci�n 'antid'.
1602     Entonces, el resultado de 'antidiff' es igual a '<L>[1] +
1603     'integrate (<L>[2], <x>)', donde <x> es la variable de integraci�n.
1604
1605     Ejemplos:
1606
1607          (%i1) load ("antid")$
1608          (%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
1609                                      z(x)  d
1610          (%o2)                y(x) %e     (-- (z(x)))
1611                                            dx
1612          (%i3) a1: antid (expr, x, z(x));
1613                                 z(x)      z(x)  d
1614          (%o3)          [y(x) %e    , - %e     (-- (y(x)))]
1615                                                 dx
1616          (%i4) a2: antidiff (expr, x, z(x));
1617                                      /
1618                               z(x)   [   z(x)  d
1619          (%o4)         y(x) %e     - I %e     (-- (y(x))) dx
1620                                      ]         dx
1621                                      /
1622          (%i5) a2 - (first (a1) + 'integrate (second (a1), x));
1623          (%o5)                           0
1624          (%i6) antid (expr, x, y(x));
1625                                       z(x)  d
1626          (%o6)             [0, y(x) %e     (-- (z(x)))]
1627                                             dx
1628          (%i7) antidiff (expr, x, y(x));
1629                            /
1630                            [        z(x)  d
1631          (%o7)             I y(x) %e     (-- (z(x))) dx
1632                            ]              dx
1633                            /
1634
1635 -- Funci�n: antidiff (<expr>, <x>, <u>(<x>))
1636     Devuelve la antiderivada de <expr> respecto de <x>.  La expresi�n
1637     <expr> puede contener una funci�n no especificada <u> y sus
1638     derivadas.
1639
1640     Cuando 'antidiff' se ejecuta con �xito, la expresi�n resultante no
1641     tiene s�mbolos integrales (esto es, no tiene referencias a la
1642     funci�n 'integrate').  En otro caso, 'antidiff' devuelve una
1643     expresi�n que se encuentra total o parcialmente bajo el signo de
1644     integraci�n.  Si 'antidiff' no puede ralizar ning�n progreso, el
1645     valor devuelto se encuentra completamente bajo la integral.
1646
1647     Es necesario ejecutar 'load ("antid")' para cargar esta funci�n.
1648     El paquete 'antid' define tambi�n las funciones 'nonzeroandfreeof'
1649     y 'linear'.
1650
1651     La funci�n 'antidiff' est� relacionada con 'antid' como se indica a
1652     continuaci�n.  Sea <L> la lista de dos elementos que devuelve
1653     'antid'.  Entonces, el valor retornado por 'antidiff' es igual a
1654     '<L>[1] + 'integrate (<L>[2], <x>)', donde <x> es la variable de
1655     integraci�n.
1656
1657     Ejemplos:
1658
1659          (%i1) load ("antid")$
1660          (%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
1661                                      z(x)  d
1662          (%o2)                y(x) %e     (-- (z(x)))
1663                                            dx
1664          (%i3) a1: antid (expr, x, z(x));
1665                                 z(x)      z(x)  d
1666          (%o3)          [y(x) %e    , - %e     (-- (y(x)))]
1667                                                 dx
1668          (%i4) a2: antidiff (expr, x, z(x));
1669                                      /
1670                               z(x)   [   z(x)  d
1671          (%o4)         y(x) %e     - I %e     (-- (y(x))) dx
1672                                      ]         dx
1673                                      /
1674          (%i5) a2 - (first (a1) + 'integrate (second (a1), x));
1675          (%o5)                           0
1676          (%i6) antid (expr, x, y(x));
1677                                       z(x)  d
1678          (%o6)             [0, y(x) %e     (-- (z(x)))]
1679                                             dx
1680          (%i7) antidiff (expr, x, y(x));
1681                            /
1682                            [        z(x)  d
1683          (%o7)             I y(x) %e     (-- (z(x))) dx
1684                            ]              dx
1685                            /
1686
1687 -- Funci�n: at (<expr>, [<eqn_1>, ..., <eqn_n>])
1688 -- Funci�n: at (<expr>, <eqn>)
1689     Eval�a la expresi�n <expr> asignando a las variables los valores
1690     especificados para ellas en la lista de ecuaciones '[<eqn_1>, ...,
1691     <eqn_n>]' o en la ecuaci�n simple <eqn>.
1692
1693     Si una subexpresi�n depende de cualquiera de las variables para la
1694     cual se especifica un valor, pero no puede ser evaluado, entonces
1695     'at' devuelve una forma nominal.
1696
1697     La funci�n 'at' realiza m�ltiples sustituciones en serie, no en
1698     paralelo.
1699
1700     V�ase tambi�n 'atvalue'.  Para otras funciones que tambi�n llevan a
1701     cabo sustituciones, cons�ltense 'subst' y 'ev'.
1702
1703     Ejemplos:
1704
1705          (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
1706                                          2
1707          (%o1)                          a
1708          (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
1709          (%o2)                        @2 + 1
1710          (%i3) printprops (all, atvalue);
1711                                          !
1712                            d             !
1713                           --- (f(@1, @2))!       = @2 + 1
1714                           d@1            !
1715                                          !@1 = 0
1716
1717                                               2
1718                                    f(0, 1) = a
1719
1720          (%o3)                         done
1721          (%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
1722                            d                          d
1723          (%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
1724                            dx                         dx
1725          (%i5) at (%, [x = 0, y = 1]);
1726                                                   !
1727                        2              d           !
1728          (%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
1729                                       dx          !
1730                                                   !x = 0, y = 1
1731
1732 -- Propiedad: atomgrad
1733
1734     La propiedad 'atomgrad' es asignada por 'gradef'.
1735
1736 -- Funci�n: atvalue (<expr>, [<x_1> = <a_1>, ..., <x_m> = <a_m>], <c>)
1737 -- Funci�n: atvalue (<expr>, <x_1> = <a_1>, <c>)
1738     Asigna el valor <c> a <expr> en el punto '<x> = <a>'.
1739
1740     La expresi�n <expr> es una funci�n del tipo '<f>(<x_1>, ...,
1741     <x_m>)', o una derivada, 'diff (<f>(<x_1>, ..., <x_m>), <x_1>,
1742     <n_1>, ..., <x_n>, <n_m>)' en la que aparecen los argumentos de la
1743     funci�n de forma expl�cita.  Los s�mbolos <n_i> se refieren al
1744     orden de diferenciaci�n respecto de <x_i>.
1745
1746     El punto en el que 'atvalue' establece el valor se especifica
1747     mediante la lista de ecuaciones '[<x_1> = <a_1>, ..., <x_m> =
1748     <a_m>]'.  Si hay una �nica variable <x_1>, la ecuaci�n puede
1749     escribirse sin formar parte de una lista.
1750
1751     La llamada 'printprops ([<f_1>, <f_2>, ...], atvalue)' muestra los
1752     valores asignados por 'atvalue' a las funciones '<f_1>, <f_2>,
1753     ...'.  La llamada 'printprops (<f>, atvalue)' muestra los valores
1754     asignados por 'atvalue' a la funci�n <f>.  La llamada 'printprops
1755     (all, atvalue)' muestra los valores asignados por 'atvalue' a todas
1756     las funciones.
1757
1758     Los s�mbolos '@1', '@2', ...  representan las variables <x_1>,
1759     <x_2>, ...  cuando se muestran los valores asignados por 'atvalue'.
1760
1761     La funci�n 'atvalue' eval�a sus argumentos y devuelve <c>, el valor
1762     asignado.
1763
1764     Ejemplos:
1765
1766          (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
1767                                          2
1768          (%o1)                          a
1769          (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
1770          (%o2)                        @2 + 1
1771          (%i3) printprops (all, atvalue);
1772                                          !
1773                            d             !
1774                           --- (f(@1, @2))!       = @2 + 1
1775                           d@1            !
1776                                          !@1 = 0
1777
1778                                               2
1779                                    f(0, 1) = a
1780
1781          (%o3)                         done
1782          (%i4) diff (4*f(x,y)^2 - u(x,y)^2, x);
1783                            d                          d
1784          (%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
1785                            dx                         dx
1786          (%i5) at (%, [x = 0, y = 1]);
1787                                                   !
1788                        2              d           !
1789          (%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
1790                                       dx          !
1791                                                   !x = 0, y = 1
1792
1793 -- Funci�n: cartan -
1794     El c�lculo exterior de formas diferenciales es una herramienta
1795     b�sica de la geometr�a diferencial desarrollada por Elie Cartan,
1796     teniendo importantes aplicaciones en la teor�a de ecuaciones
1797     diferenciales en derivadas parciales.  El paquete 'cartan' dispone
1798     de las funciones 'ext_diff' y 'lie_diff', as� como de los
1799     operadores '~' (producto exterior) y '|' (contracci�n de una forma
1800     con un vector).  La orden 'demo (tensor)' permite ver una breve
1801     descripci�n de estas instrucciones, junto con ejemplos.
1802
1803     El paquete 'cartan' fue escrito por F.B. Estabrook y H.D.
1804     Wahlquist.
1805
1806 -- Funci�n: del (<x>)
1807     La expresi�n 'del (<x>)' representa el diferencial de la variable
1808     x.
1809
1810     La funci�n 'diff' devuelve una expresi�n que contiene a 'del' si no
1811     se ha especificado una variable independiente.  En este caso, el
1812     valor retornado es el llamado "diferencial total".
1813
1814     Ejemplos:
1815
1816          (%i1) diff (log (x));
1817                                       del(x)
1818          (%o1)                        ------
1819                                         x
1820          (%i2) diff (exp (x*y));
1821                               x y              x y
1822          (%o2)            x %e    del(y) + y %e    del(x)
1823          (%i3) diff (x*y*z);
1824          (%o3)         x y del(z) + x z del(y) + y z del(x)
1825
1826 -- Funci�n: delta (<t>)
1827     Es la funci�n delta de Dirac.
1828
1829     En el estado actual de desarrollo de Maxima, s�lo 'laplace'
1830     reconoce la funci�n 'delta'.
1831
1832     Ejemplo:
1833
1834          (%i1) laplace (delta (t - a) * sin(b*t), t, s);
1835          Is  a  positive, negative, or zero?
1836
1837          p;
1838                                             - a s
1839          (%o1)                   sin(a b) %e
1840
1841 -- Variable del sistema: dependencies
1842     Valor por defecto: '[]'
1843
1844     La variable 'dependencies' es la lista de �tomos que tienen alg�n
1845     tipo de dependencia funcional, asignada por 'depends' o 'gradef'.
1846     La lista 'dependencies' es acumulativa: cada llamada a 'depends' o
1847     'gradef' a�ade elementos adicionales.
1848
1849     V�anse 'depends' y 'gradef'.
1850
1851 -- Funci�n: depends (<f_1>, <x_1>, ..., <f_n>, <x_n>)
1852     Declara dependencias funcionales entre variables con el prop�sito
1853     de calcular derivadas.  En ausencia de una dependencia declarada,
1854     'diff (f, x)' devuelve cero.  Si se declara 'depends (f, x)', 'diff
1855     (f, x)' devuelve una derivada simb�lica (esto es, una expresi�n con
1856     'diff').
1857
1858     Cada argumento <f_1>, <x_1>, etc., puede ser el nombre de una
1859     variable, de un arreglo o una lista de nombres.  Cada elemento de
1860     <f_i> (quiz�s un �nico elemento) se declara como dependiente de
1861     cada elemento de <x_i> (quiz�s tambi�n un �nico elemento).  Si
1862     alguno de los <f_i> es el nombre de un arreglo o contiene el nombre
1863     de un arreglo, todos los elemento del arregl dependen de <x_i>.
1864
1865     La funci�n 'diff' reconoce dependencias indirectas establecidas por
1866     'depends' y aplica la regla de la cadena en tales casos.
1867
1868     La instrucci�n 'remove (<f>, dependency)' borra todas las
1869     dependencias declaradas para <f>.
1870
1871     La funci�n 'depends' devuelve una lista con las dependencias que
1872     han sido establecidas.  Las dependencias se a�aden a la variable
1873     global 'dependencies'.  La funci�n 'depends' eval�a sus argumentos.
1874
1875     La funci�n 'diff' es la �nica instrucci�n de Maxima que reconoce
1876     las dependencias establecidas por 'depends'.  Otras funciones
1877     ('integrate', 'laplace', etc.)  solamente reconocen dependencias
1878     expl�citamente representadas por sus argumentos.  Por ejemplo,
1879     'integrate' no reconoce la dependencia de 'f' respecto de 'x' a
1880     menos que se represente expl�citamente como 'integrate (f(x), x)'.
1881
1882          (%i1) depends ([f, g], x);
1883          (%o1)                     [f(x), g(x)]
1884          (%i2) depends ([r, s], [u, v, w]);
1885          (%o2)               [r(u, v, w), s(u, v, w)]
1886          (%i3) depends (u, t);
1887          (%o3)                        [u(t)]
1888          (%i4) dependencies;
1889          (%o4)      [f(x), g(x), r(u, v, w), s(u, v, w), u(t)]
1890          (%i5) diff (r.s, u);
1891                                   dr           ds
1892          (%o5)                    -- . s + r . --
1893                                   du           du
1894
1895          (%i6) diff (r.s, t);
1896                                dr du           ds du
1897          (%o6)                 -- -- . s + r . -- --
1898                                du dt           du dt
1899
1900          (%i7) remove (r, dependency);
1901          (%o7)                         done
1902          (%i8) diff (r.s, t);
1903                                          ds du
1904          (%o8)                       r . -- --
1905                                          du dt
1906
1907 -- Variable optativa: derivabbrev
1908     Valor por defecto: 'false'
1909
1910     Si 'derivabbrev' vale 'true', las derivadas simb�licas (esto es,
1911     expresiones con 'diff') se muestran como sub�ndices.  En otro caso,
1912     las derivadas se muestran en la notaci�n de Leibniz, 'dy/dx'.
1913
1914 -- Funci�n: derivdegree (<expr>, <y>, <x>)
1915     Devuelve el mayor grado de la derivada de la variable dependiente
1916     <y> respecto de la variable independiente <x> que aparece en
1917     <expr>.
1918
1919     Ejemplo:
1920          (%i1) 'diff (y, x, 2) + 'diff (y, z, 3) + 'diff (y, x) * x^2;
1921                                   3     2
1922                                  d y   d y    2 dy
1923          (%o1)                   --- + --- + x  --
1924                                    3     2      dx
1925                                  dz    dx
1926          (%i2) derivdegree (%, y, x);
1927          (%o2)                           2
1928
1929 -- Funci�n: derivlist (<var_1>, ..., <var_k>)
1930     Hace que las derivadas calculadas por la instrucci�n 'ev' se
1931     calculen respecto de las variables indicadas.
1932
1933 -- Variable optativa: derivsubst
1934     Valor por defecto: 'false'
1935
1936     Si 'derivsubst' vale 'true', una sustituci�n no sint�ctica del
1937     estilo 'subst (x, 'diff (y, t), 'diff (y, t, 2))' devuelve ''diff
1938     (x, t)'.
1939
1940 -- Funci�n: diff (<expr>, <x_1>, <n_1>, ..., <x_m>, <n_m>)
1941 -- Funci�n: diff (<expr>, <x>, <n>)
1942 -- Funci�n: diff (<expr>, <x>)
1943 -- Funci�n: diff (<expr>)
1944     Devuelve la derivada o diferencial de <expr> respecto de alguna o
1945     de todas las variables presentes en <expr>.
1946
1947     La llamada 'diff (<expr>, <x>, <n>)' devuelve la <n>-esima derivada
1948     de <expr> respecto de <x>.
1949
1950     La llamada 'diff (<expr>, <x_1>, <n_1>, ..., <x_m>, <n_m>)'
1951     devuelve la derivada parcial de <expr> con respecto de <x_1>, ...,
1952     <x_m>.  Equivale a 'diff (... (diff (<expr>, <x_m>, <n_m>) ...),
1953     <x_1>, <n_1>)'.
1954
1955     La llamada 'diff (<expr>, <x>)' devuelve la primera derivada de
1956     <expr> respecto de la variable <x>.
1957
1958     La llamada 'diff (<expr>)' devuelve el diferencial total de <expr>,
1959     esto es, la suma de las derivadas de <expr> respecto de cada una de
1960     sus variables, multiplicadas por el diferencial 'del' de cada una
1961     de ellas.
1962
1963     La forma nominal de 'diff' es necesaria en algunos contextos, como
1964     para definir ecuaciones diferenciales.  En tales casos, 'diff'
1965     puede ir precedida de un ap�strofo (como ''diff') para evitar el
1966     c�lculo de la derivada.
1967
1968     Si 'derivabbrev' vale 'true', las derivadas se muestran como
1969     sub�ndices.  En otro caso, se muestran en la notaci�n de Leibniz,
1970     'dy/dx'.
1971
1972     Ejemplos:
1973
1974          (%i1) diff (exp (f(x)), x, 2);
1975                               2
1976                        f(x)  d               f(x)  d         2
1977          (%o1)       %e     (--- (f(x))) + %e     (-- (f(x)))
1978                                2                   dx
1979                              dx
1980          (%i2) derivabbrev: true$
1981          (%i3) 'integrate (f(x, y), y, g(x), h(x));
1982                                   h(x)
1983                                  /
1984                                  [
1985          (%o3)                   I     f(x, y) dy
1986                                  ]
1987                                  /
1988                                   g(x)
1989          (%i4) diff (%, x);
1990                 h(x)
1991                /
1992                [
1993          (%o4) I     f(x, y)  dy + f(x, h(x)) h(x)  - f(x, g(x)) g(x)
1994                ]            x                     x                  x
1995                /
1996                 g(x)
1997
1998     Para el paquete sobre tensores se han introducido las siguientes
1999     modificaciones:
2000
2001     (1) Las derivadas de los objetos indexados en <expr> tendr�n las
2002     variables <x_i> a�adidas como argumentos adicionales.  Entonces se
2003     ordenar�n todos los �ndices de derivadas.
2004
2005     (2) Las <x_i> pueden ser enteros entre 1 hasta el valor de la
2006     variable 'dimension' [valor por defecto: 4].  Esto har� que la
2007     diferenciaci�n sea llevada a cabo con respecto al <x_i>-�simo
2008     n�mero de la lista 'coordinates', la cual deber�a contener una
2009     lista con los nombres de las coordenadas, por ejemplo, '[x, y, z,
2010     t]'.  Si 'coordinates' es una variableis at�mica, entonces esa
2011     variable ser� utilizada como variable de diferenciaci�n.  Se
2012     permite la utilizaci�n de arreglos con los nombres de las
2013     coordenadas o nombres con sub�ndices, como 'X[1]', 'X[2]', ...  to
2014     be used.  Si a 'coordinates' no se le ha asignado ning�n valor,
2015     entonces las variables ser�n tratadas como se ha indicado en (1).
2016
2017 -- S�mbolo especial: diff
2018
2019     Si el nombre 'diff' est� presente en una llamada a la funci�n 'ev'
2020     en modo 'evflag', entonces se calculan todas las derivadas
2021     presentes en 'expr'.
2022
2023 -- Funci�n: express (<expr>)
2024     Transforma los nombres de los operadores diferenciales en
2025     expresiones que contienen derivadas parciales.  Los operadores
2026     reconocidos por la funci�n 'express' son: 'grad' (gradiente), 'div'
2027     (divergencia), 'curl' (rotacional), 'laplacian' (laplaciano) y '~'
2028     (producto vectorial).
2029
2030     Las derivadas simb�licas (es decir, las que incluyen la forma
2031     nominal 'diff') que aparecen en la expresi�n devuelta por
2032     'express', se pueden calcular pas�ndole a 'ev' el argumento 'diff',
2033     o escribi�ndolo directamente en la l�nea de comandos.  En este
2034     contexto, 'diff' act�a como 'evfun'.
2035
2036     Es necesario ejecutar 'load ("vect")' para cargar esta funci�n.
2037
2038     Ejemplos:
2039
2040          (%i1) load ("vect")$
2041          (%i2) grad (x^2 + y^2 + z^2);
2042                                        2    2    2
2043          (%o2)                  grad (z  + y  + x )
2044          (%i3) express (%);
2045                 d    2    2    2   d    2    2    2   d    2    2    2
2046          (%o3) [-- (z  + y  + x ), -- (z  + y  + x ), -- (z  + y  + x )]
2047                 dx                 dy                 dz
2048          (%i4) ev (%, diff);
2049          (%o4)                    [2 x, 2 y, 2 z]
2050          (%i5) div ([x^2, y^2, z^2]);
2051                                        2   2   2
2052          (%o5)                   div [x , y , z ]
2053          (%i6) express (%);
2054                             d    2    d    2    d    2
2055          (%o6)              -- (z ) + -- (y ) + -- (x )
2056                             dz        dy        dx
2057          (%i7) ev (%, diff);
2058          (%o7)                    2 z + 2 y + 2 x
2059          (%i8) curl ([x^2, y^2, z^2]);
2060                                         2   2   2
2061          (%o8)                   curl [x , y , z ]
2062          (%i9) express (%);
2063                 d    2    d    2   d    2    d    2   d    2    d    2
2064          (%o9) [-- (z ) - -- (y ), -- (x ) - -- (z ), -- (y ) - -- (x )]
2065                 dy        dz       dz        dx       dx        dy
2066          (%i10) ev (%, diff);
2067          (%o10)                      [0, 0, 0]
2068          (%i11) laplacian (x^2 * y^2 * z^2);
2069                                            2  2  2
2070          (%o11)                laplacian (x  y  z )
2071          (%i12) express (%);
2072                   2                2                2
2073                  d     2  2  2    d     2  2  2    d     2  2  2
2074          (%o12)  --- (x  y  z ) + --- (x  y  z ) + --- (x  y  z )
2075                    2                2                2
2076                  dz               dy               dx
2077          (%i13) ev (%, diff);
2078                                2  2      2  2      2  2
2079          (%o13)             2 y  z  + 2 x  z  + 2 x  y
2080          (%i14) [a, b, c] ~ [x, y, z];
2081          (%o14)                [a, b, c] ~ [x, y, z]
2082          (%i15) express (%);
2083          (%o15)          [b z - c y, c x - a z, a y - b x]
2084
2085 -- Funci�n: gradef (<f>(<x_1>, ..., <x_n>), <g_1>, ..., <g_m>)
2086 -- Funci�n: gradef (<a>, <x>, <expr>)
2087     Define las derivadas parciales, o componentes del gradiente, de la
2088     funci�n <f> o variable <a>.
2089
2090     La llamada 'gradef (<f>(<x_1>, ..., <x_n>), <g_1>, ..., <g_m>)'
2091     define 'd<f>/d<x_i>' como <g_i>, donde <g_i> es una expresi�n;
2092     <g_i> puede ser una llamada a funci�n, pero no el nombre de una
2093     funci�n.  El n�mero de derivadas parciales <m> puede ser menor que
2094     el n�mero de argumentos <n>, en cuyo caso las derivadas se definen
2095     solamente con respecto a <x_1>, ...., <x_m>.
2096
2097     La llamada 'gradef (<a>, <x>, <expr>)' define la derivada de la
2098     variable <a> respecto de <x> en <expr>.  Con esto se establece la
2099     dependencia de <a> respecto de <x> a trav�s de 'depends (<a>,
2100     <x>)'.
2101
2102     El primer argumento '<f>(<x_1>, ..., <x_n>)' o <a> no se eval�a,
2103     pero s� lo hacen el resto de argumentos <g_1>, ..., <g_m>.  La
2104     llamada a 'gradef' devuelve la funci�n o variable para la que se
2105     define la derivada parcial.
2106
2107     La instrucci�n 'gradef' puede redefinir las derivadas de las
2108     funciones propias de Maxima.  Por ejemplo, 'gradef (sin(x), sqrt (1
2109     - sin(x)^2))' redefine la derivada de 'sin'.
2110
2111     La instrucci�n 'gradef' no puede definir derivadas parciales de
2112     funciones subindicadas.
2113
2114     La llamada 'printprops ([<f_1>, ..., <f_n>], gradef)' muestra las
2115     derivadas parciales de las funciones <f_1>, ..., <f_n>, tal como
2116     las defini� 'gradef'.
2117
2118     La llamada 'printprops ([<a_n>, ..., <a_n>], atomgrad)' muestra las
2119     derivadas parciales de las variables <a_n>, ..., <a_n>, tal como
2120     las defini� 'gradef'.
2121
2122     La variable 'gradefs' contiene la lista de las funciones para las
2123     que se han definido derivadas parciales con la instrucci�n
2124     'gradef', pero no incluye las variables para las que se han
2125     definido las derivadas parciales.
2126
2127     Los gradientes son necesarios cuando una funci�n no se conoce
2128     expl�citamente pero s� sus primeras derivadas y es necesario
2129     calcular las derivadas de orden mayor.
2130
2131 -- Variable del sistema: gradefs
2132     Valor por defecto: '[]'
2133
2134     La variable 'gradefs' contiene la lista de las funciones para las
2135     que se han definido derivadas parciales con la instrucci�n
2136     'gradef', pero no incluye las variables para las que se han
2137     definido las derivadas parciales.
2138
2139 -- Funci�n: laplace (<expr>, <t>, <s>)
2140     Calcula la transformada de Laplace de <expr> con respecto de la
2141     variable <t> y par�metro de transformaci�n <s>.
2142
2143     La funci�n 'laplace' reconoce en <expr> las funciones 'delta',
2144     'exp', 'log', 'sin', 'cos', 'sinh', 'cosh' y 'erf', as� como
2145     'derivative', 'integrate', 'sum' y 'ilt'.  Si 'laplace' no
2146     encuentra una transformada, entonces llama a la funci�n 'specint',
2147     la cual puede encontrar la transformada de Laplace de expresiones
2148     con funciones especiales, tales como las de Bessel.  'specint'
2149     tambi�n puede manipular la funci�n 'unit_step'.  V�ase 'specint'
2150     para m�s informaci�n.
2151
2152     Cuando tampoco 'specint' sea capaz de encontrar una soluci�n, se
2153     devolver� una forma nominal.
2154
2155     La funci�n 'laplace' reconoce integrales de convoluci�n de la forma
2156     'integrate (f(x) * g(t - x), x, 0, t)', no pudiendo reconocer otros
2157     tipos de convoluciones.
2158
2159     Las relaciones funcionales se deben representar expl�citamente en
2160     <expr>; las relaciones impl�citas establecidas por 'depends' no son
2161     reconocidas.  As�, si <f> depende de <x> y <y>, 'f (x, y)' debe
2162     aparecer en <expr>.
2163
2164     V�ase tambi�n 'ilt', la transformada inversa de Laplace.
2165
2166     Ejemplos:
2167
2168          (%i1) laplace (exp (2*t + a) * sin(t) * t, t, s);
2169                                      a
2170                                    %e  (2 s - 4)
2171          (%o1)                    ---------------
2172                                     2           2
2173                                   (s  - 4 s + 5)
2174          (%i2) laplace ('diff (f (x), x), x, s);
2175          (%o2)             s laplace(f(x), x, s) - f(0)
2176          (%i3) diff (diff (delta (t), t), t);
2177                                    2
2178                                   d
2179          (%o3)                    --- (delta(t))
2180                                     2
2181                                   dt
2182          (%i4) laplace (%, t, s);
2183                                      !
2184                         d            !         2
2185          (%o4)        - -- (delta(t))!      + s  - delta(0) s
2186                         dt           !
2187                                      !t = 0
2188          (%i5) assume(a>0)$
2189          (%i6) laplace(gamma_incomplete(a,t),t,s),gamma_expand:true;
2190                                                        - a - 1
2191                                   gamma(a)   gamma(a) s
2192          (%o6)                    -------- - -----------------
2193                                      s            1     a
2194                                                  (- + 1)
2195                                                   s
2196          (%i7) factor(laplace(gamma_incomplete(1/2,t),t,s));
2197                                                        s + 1
2198                                sqrt(%pi) (sqrt(s) sqrt(-----) - 1)
2199                                                          s
2200          (%o7)                 -----------------------------------
2201                                          3/2      s + 1
2202                                         s    sqrt(-----)
2203                                                     s
2204          (%i8) assume(exp(%pi*s)>1)$
2205          (%i9) laplace(sum((-1)^n*unit_step(t-n*%pi)*sin(t),n,0,inf),t,s),simpsum;
2206                                   %i                         %i
2207                        ------------------------ - ------------------------
2208                                        - %pi s                    - %pi s
2209                        (s + %i) (1 - %e       )   (s - %i) (1 - %e       )
2210          (%o9)         ---------------------------------------------------
2211                                                 2
2212          (%i9) factor(%);
2213                                                %pi s
2214                                              %e
2215          (%o9)                   -------------------------------
2216                                                       %pi s
2217                                  (s - %i) (s + %i) (%e      - 1)
2218
2219
2220
2221File: maxima.info,  Node: Integraci�n,  Next: Ecuaciones,  Prev: Diferenciaci�n,  Up: Top
2222
222319 Integraci�n
2224**************
2225
2226* Menu:
2227
2228* Introducci�n a la integraci�n::
2229* Funciones y variables para integraci�n::
2230* Introducci�n a QUADPACK::
2231* Funciones y variables para QUADPACK::
2232
2233
2234File: maxima.info,  Node: Introducci�n a la integraci�n,  Next: Funciones y variables para integraci�n,  Prev: Integraci�n,  Up: Integraci�n
2235
223619.1 Introducci�n a la integraci�n
2237==================================
2238
2239Maxima tiene varias rutinas para calcular integrales.  La funci�n
2240'integrate' hace uso de la mayor parte de ellas.  Tambi�n est� el
2241paquete 'antid', que opera con funciones no especificadas y sus
2242derivadas.  Para usos num�ricos se dispone de la bater�a de integradores
2243adaptativos de 'QUADPACK', como 'quad_qag', 'quad_qags', etc., que se
2244describen en la secci�n 'QUADPACK'.  Tambi�n se trabajan funciones
2245hipergeom�tricas, v�ase 'specint' para m�s detalles.  En t�rminos
2246generales, Maxima s�lo opera con funciones que son integrables en
2247t�rminos de funciones elementales, como las racionales, trigonom�tricas,
2248logar�tmicas, exponenciales, radicales, etc., y unas pocas extensiones
2249de �stas, como la funci�n de error o los dilogaritmos.  No opera con
2250integrales en t�rminos de funciones desconocidas, como 'g(x)' o 'h(x)'.
2251
2252
2253File: maxima.info,  Node: Funciones y variables para integraci�n,  Next: Introducci�n a QUADPACK,  Prev: Introducci�n a la integraci�n,  Up: Integraci�n
2254
225519.2 Funciones y variables para integraci�n
2256===========================================
2257
2258 -- Funci�n: changevar (<expr>, <f(x,y)>, <y>, <x>)
2259     Hace el cambio de variable dado por '<f(x,y)> = 0' en todas las
2260     integrales que aparecen en <expr> con la integraci�n respecto de
2261     <x>.  La nueva variable ser� <y>.
2262
2263          (%i1) assume(a > 0)$
2264          (%i2) 'integrate (%e**sqrt(a*y), y, 0, 4);
2265                                4
2266                               /
2267                               [    sqrt(a) sqrt(y)
2268          (%o2)                I  %e                dy
2269                               ]
2270                               /
2271                                0
2272          (%i3) changevar (%, y-z^2/a, z, y);
2273                                0
2274                               /
2275                               [                abs(z)
2276                             2 I            z %e       dz
2277                               ]
2278                               /
2279                                - 2 sqrt(a)
2280          (%o3)            - ----------------------------
2281                                          a
2282
2283     Si una expresi�n contiene formas nominales, como aqu�lla en la que
2284     aparece ''integrate' en el ejemplo, podr� ser evaluada por 'ev' si
2285     se utiliza el t�rmino 'nouns'.  Por ejemplo, la expresi�n devuelta
2286     por 'changevar' se puede evaluar haciendo 'ev (%o3, nouns)'.
2287
2288     La funci�n 'changevar' tambi�n se puede utilizar para cambiar los
2289     �ndices de una suma o producto.  Sin embargo, debe tenerse en
2290     cuenta que cuando se realiza un cambio en una suma o producto, el
2291     mismo debe expresarse en t�rminos de sumas, como 'i = j+ ...', no
2292     como una funci�n de mayor grado.
2293
2294     Ejemplo:
2295
2296          (%i4) sum (a[i]*x^(i-2), i, 0, inf);
2297                                   inf
2298                                   ====
2299                                   \         i - 2
2300          (%o4)                     >    a  x
2301                                   /      i
2302                                   ====
2303                                   i = 0
2304          (%i5) changevar (%, i-2-n, n, i);
2305                                  inf
2306                                  ====
2307                                  \               n
2308          (%o5)                    >      a      x
2309                                  /        n + 2
2310                                  ====
2311                                  n = - 2
2312
2313 -- Funci�n: dblint (<f>, <r>, <s>, <a>, <b>)
2314     Es una rutina para integrales dobles escrita en lenguaje Maxima y
2315     posteriormente traducida y compilada a c�digo m�quina.  La
2316     instrucci�n 'load (dblint)' carga esta funci�n.  Utiliza el m�todo
2317     de Simpson en las dos direcciones 'x' e 'y' para calcular
2318
2319          /b /s(x)
2320          |  |
2321          |  |    f(x,y) dy dx
2322          |  |
2323          /a /r(x)
2324
2325     La funci�n <f> debe ser una funci�n traducida o compilada de dos
2326     variables, a la vez que <r> y <s> deben ser cada una de ellas una
2327     funci�n traducida o compilada de una variable, mientras que <a> y
2328     <b> deben ser n�meros en coma flotante.  La rutina tiene dos
2329     variables globales que determinan el n�mero de divisiones de los
2330     intervalos 'x' e 'y': 'dblint_x' y 'dblint_y', ambos con un valor
2331     por defecto de 10, pero que pueden cambiarse de forma independiente
2332     a otros valores enteros (hay '2*dblint_x+1' puntos a calcular en la
2333     direcci�n 'x' y '2*dblint_y+1' en la direcci�n 'y').  La rutina
2334     subdivide el eje X y luego para cada valor de X calcula primero
2335     '<r>(x)' y '<s>(x)'; entonces se subdivide el eje Y entre '<r>(x)'
2336     y '<s>(x)', evalu�ndose la integral a lo largo del eje Y aplicando
2337     la regla de Simpson; a continuaci�n, se eval�a la integral a lo
2338     largo del eje X utilizando tambi�n la regla de Simpson tomando como
2339     valores de funci�n las integrales sobre Y. Este procedimiento puede
2340     ser num�ricamente inestable por m�ltiples motivos, pero es
2341     razonablemente r�pido: ev�tese su uso con funciones con grandes
2342     oscilaciones o que tengan singularidades.  Las integrales del eje Y
2343     dependen de la proximidad de los l�mites '<r>(x)' y '<s>(x)', de
2344     manera que si la distancia '<s>(x) - <r>(x)' var�a r�pidamente con
2345     X, puede dar lugar errores importantes debido a truncamientos de
2346     diferente amplitud en las integrales de Y. Se puede aumentar
2347     'dblint_x' y 'dblint_y' al objeto de mejorar el recubrimiento de la
2348     regi�n de integraci�n, pero a costa del tiempo de c�mputo.  Es
2349     necesario que las funciones <f>, <r> y <s> est�n traducidas o
2350     compiladas antes de utilizar 'dblint', lo cual redundar� en una
2351     mejora del tiempo de ejecuci�n de varios �rdenes de magnitud
2352     respecto de la ejecuci�n de c�digo interpretado.
2353
2354 -- Funci�n: defint (<expr>, <x>, <a>, <b>)
2355     Intenta calcular una integral definida.  La funci�n 'defint' es
2356     invocada por 'integrate' cuando se especifican los l�mites de
2357     integraci�n, por ejemplo 'integrate (<expr>, <x>, <a>, <b>)'.  As�,
2358     desde el punto de vista del usuario, es suficiente con utilizar
2359     'integrate'.
2360
2361     La funci�n 'defint' devuelve una expresi�n simb�lica, bien sea el
2362     resultado calculado o la forma nominal.  V�ase 'quad_qag' y sus
2363     funciones relacionadas para aproximaciones num�ricas de integrales
2364     definidas.
2365
2366 -- Variable optativa: erfflag
2367     Valor por defecto: 'true'
2368
2369     Si 'erfflag' vale 'false', la funci�n 'risch' no introduce la
2370     funci�n 'erf' en el resultado si no hab�a ninguna en el integrando.
2371
2372 -- Funci�n: ilt (<expr>, <s>, <t>)
2373     Calcula la transformada inversa de Laplace de <expr> con respecto
2374     de <s> y par�metro <t>.  El argumento <expr> debe ser una fracci�n
2375     de polinomios cuyo denominador tenga s�lo factores lineales y
2376     cuadr�ticos.  Utilizando las funciones 'laplace' y 'ilt', junto con
2377     las funciones 'solve' o 'linsolve', el usuario podr� resolver
2378     ciertas ecuaciones integrales.
2379
2380          (%i1) 'integrate (sinh(a*x)*f(t-x), x, 0, t) + b*f(t) = t**2;
2381                        t
2382                       /
2383                       [                                    2
2384          (%o1)        I  f(t - x) sinh(a x) dx + b f(t) = t
2385                       ]
2386                       /
2387                        0
2388          (%i2) laplace (%, t, s);
2389                                         a laplace(f(t), t, s)   2
2390          (%o2)  b laplace(f(t), t, s) + --------------------- = --
2391                                                 2    2           3
2392                                                s  - a           s
2393          (%i3) linsolve ([%], ['laplace(f(t), t, s)]);
2394                                                  2      2
2395                                               2 s  - 2 a
2396          (%o3)     [laplace(f(t), t, s) = --------------------]
2397                                              5         2     3
2398                                           b s  + (a - a  b) s
2399          (%i4) ilt (rhs (first (%)), s, t);
2400          Is  a b (a b - 1)  positive, negative, or zero?
2401
2402          pos;
2403                         sqrt(a b (a b - 1)) t
2404                  2 cosh(---------------------)       2
2405                                   b               a t
2406          (%o4) - ----------------------------- + -------
2407                        3  2      2               a b - 1
2408                       a  b  - 2 a  b + a
2409
2410                                                                 2
2411                                                       + ------------------
2412                                                          3  2      2
2413                                                         a  b  - 2 a  b + a
2414
2415 -- Variable opcional: intanalysis
2416     Valor por defecto: 'true'
2417
2418     Cuando vale 'true', la integraci�n definida trata de encontrar
2419     polos en el integrando dentro del intervalo de integraci�n.  Si
2420     encuentra alguno, entonces la integral se calcula como valor
2421     principal.  Si 'intanalysis' vale 'false', entonces no se realiza
2422     esta comprobación y la integraci�n se realiza sin tener en cuenta
2423     los polos.
2424
2425     V�ase tambi�n 'ldefint'.
2426
2427     Ejemplos:
2428
2429     Maxima puede calcular las siguientes integrales cuando a
2430     'intanalysis' se le asigna el valor 'false':
2431
2432          (%i1) integrate(1/(sqrt(x)+1),x,0,1);
2433                                          1
2434                                         /
2435                                         [       1
2436          (%o1)                          I  ----------- dx
2437                                         ]  sqrt(x) + 1
2438                                         /
2439                                          0
2440
2441          (%i2) integrate(1/(sqrt(x)+1),x,0,1),intanalysis:false;
2442          (%o2)                            2 - 2 log(2)
2443
2444          (%i3) integrate(cos(a)/sqrt((tan(a))^2 +1),a,-%pi/2,%pi/2);
2445          The number 1 isn't in the domain of atanh
2446           -- an error. To debug this try: debugmode(true);
2447
2448          (%i4) intanalysis:false$
2449          (%i5) integrate(cos(a)/sqrt((tan(a))^2+1),a,-%pi/2,%pi/2);
2450                                                %pi
2451          (%o5)                                 ---
2452                                                 2
2453
2454 -- Funci�n: integrate (<expr>, <x>)
2455 -- Funci�n: integrate (<expr>, <x>, <a>, <b>)
2456     Calcula simb�licamente la integral de <expr> respecto de <x>.  La
2457     llamada 'integrate (<expr>, <x>)' resuelve una integral indefinida,
2458     mientras que 'integrate (<expr>, <x>, <a>, <b>)' resuelve una
2459     integral definida con l�mites de integraci�n <a> y <b>.  Los
2460     l�mites no pueden contener a <x>.  El argumento <a> no necesita ser
2461     menor que <b>.  Si <b> es igual a <a>, 'integrate' devuelve cero.
2462
2463     V�ase 'quad_qag' y funciones relacionadas para la aproximaci�n
2464     num�rica de integrales definidas.  V�ase 'residue' para el c�lculo
2465     de residuos (integraci�n compleja).  V�ase 'antid' para un m�todo
2466     alternativo de resoluci�n de integrales indefinidas.
2467
2468     Se obtendr� una integral (es decir, una expresi�n sin 'integrate')
2469     si 'integrate' tiene �xito en el c�lculo.  En otro caso, la
2470     respuesta es la forma nominal de la integral (esto es, el operador
2471     ''integrate' precedido de ap�strofo) o una expresi�n que contiene
2472     una o m�s formas nominales.  La forma nominal de 'integrate' se
2473     muestra con un s�mbolo integral.
2474
2475     En ciertos casos es �til proporcionar una forma nominal 'a mano',
2476     haciendo preceder 'integrate' con una comilla simple o ap�strofo,
2477     como en ''integrate (<expr>, <x>)'.  Por ejemplo, la integral puede
2478     depender de algunos par�metros que todav�a no han sido calculados.
2479     La forma nominal puede aplicarse despu�s a sus argumentos haciendo
2480     'ev (<i>, nouns)' donde <i> es la forma nominal de inter�s.
2481
2482     La funci�n 'integrate' trata de manera diferente las integrales
2483     definidas de las indefinidas, empleando una bater�a de heur�sticas
2484     especial para cada caso.  Casos especiales de integrales definidas
2485     incluyen las que tienen l�mites de integraci�n iguales a cero o a
2486     infinito ('inf' o 'minf'), funciones trigonom�tricas con l�mites de
2487     integraci�n igual a cero y '%pi' o '2 %pi', funciones racionales,
2488     integrales relacionadas con las funciones 'beta' y 'psi' y algunas
2489     integrales logar�tmicas y trigonom�tricas.  El tratamiento de
2490     funciones racionales puede incluir el c�lculo de residuos.  Si no
2491     se reconoce ninguno de los casos especiales, se intenta resolver la
2492     integral idefinida y evaluarla en los l�mites de integraci�n.  Esto
2493     incluye tomar l�mites cuando alguno de los extremos del intervalo
2494     de integraci�n se acerca a m�s infinito o a menos infinito; v�ase
2495     tambi�n 'ldefint'.
2496
2497     Casos especiales de integrales indefinidas incluyen a las funciones
2498     trigonom�tricas, exponenciales, logar�tmicas y racionales.  La
2499     funci�n 'integrate' tambi�n hace uso de una peque�a tabla de
2500     integrales elementales.
2501
2502     La funci�n 'integrate' puede llevar a cabo cambios de variable si
2503     el integrando es de la forma 'f(g(x)) * diff(g(x), x)', entonces
2504     'integrate' trata de encontrar una subexpresi�n de 'g(x)' tal que
2505     la derivada de 'g(x)' divida el integrando.  Esta b�squeda puede
2506     hacer uso de las derivadas establecidas con la funci�n 'gradef'.
2507     V�anse tambi�n 'changevar' y 'antid'.
2508
2509     Si ninguna de las heur�sticas descritas resuelve la integral
2510     indefinida, se ejecuta el algoritmo de Risch.  La variable 'risch'
2511     puede utilizarse como una 'evflag', en una llamada a 'ev' o en la
2512     l�nea de comandos por ejemplo, 'ev (integrate (<expr>, <x>),
2513     risch)' o 'integrate (<expr>, <x>), risch'.  Si 'risch' est�
2514     presenta, 'integrate' llama a la funci�n 'risch' sin intentar
2515     primero las heur�sticas.  V�ase tambi�n 'risch'.
2516
2517     La funci�n 'integrate' opera �nicamente con relaciones funcionales
2518     que se representen expl�citamente con la notaci�n 'f(x)', sin
2519     considerar las dependencias impl�citas establecidas mediante la
2520     funci�n 'depends'.
2521
2522     Es posible que 'integrate' necesite conocer alguna propiedad de
2523     alguno de los par�metros presentes en el integrando, en cuyo caso
2524     'integrate' consultar� en primer lugar la base de datos creada con
2525     'assume', y si la variable de inter�s no se encuentra ah�,
2526     'integrate' le preguntar� al usuario.  Dependiendo de la pregunta,
2527     posibles respuestas son: 'yes;', 'no;', 'pos;', 'zero;' o 'neg;'.
2528
2529     Por defecto, 'integrate' no se considera lineal.  V�anse 'declare'
2530     y 'linear'.
2531
2532     La funci�n 'integrate' intentar� la integraci�n por partes s�lo en
2533     casos especiales.
2534
2535     Ejemplos:
2536
2537        * Integrales elementales indefinidas y definidas.
2538
2539               (%i1) integrate (sin(x)^3, x);
2540                                          3
2541                                       cos (x)
2542               (%o1)                   ------- - cos(x)
2543                                          3
2544               (%i2) integrate (x/ sqrt (b^2 - x^2), x);
2545                                                2    2
2546               (%o2)                    - sqrt(b  - x )
2547               (%i3) integrate (cos(x)^2 * exp(x), x, 0, %pi);
2548                                              %pi
2549                                          3 %e      3
2550               (%o3)                      ------- - -
2551                                             5      5
2552               (%i4) integrate (x^2 * exp(-x^2), x, minf, inf);
2553                                           sqrt(%pi)
2554               (%o4)                       ---------
2555                                               2
2556
2557        * Utilizaci�n de 'assume' e interacci�n.
2558
2559               (%i1) assume (a > 1)$
2560               (%i2) integrate (x**a/(x+1)**(5/2), x, 0, inf);
2561                   2 a + 2
2562               Is  -------  an integer?
2563                      5
2564
2565               no;
2566               Is  2 a - 3  positive, negative, or zero?
2567
2568               neg;
2569                                                  3
2570               (%o2)                  beta(a + 1, - - a)
2571                                                  2
2572
2573        * Cambio de variable.  En este ejemplo hay dos cambios de
2574          variable: uno utilizando una derivada establecida con 'gradef'
2575          y otra utilizando la derivada 'diff(r(x))' de una funci�n no
2576          especificada 'r(x)'.
2577
2578               (%i3) gradef (q(x), sin(x**2));
2579               (%o3)                         q(x)
2580               (%i4) diff (log (q (r (x))), x);
2581                                     d               2
2582                                    (-- (r(x))) sin(r (x))
2583                                     dx
2584               (%o4)                ----------------------
2585                                           q(r(x))
2586               (%i5) integrate (%, x);
2587               (%o5)                     log(q(r(x)))
2588
2589        * El valor devuelto contiene la forma nominal ''integrate'.  En
2590          este ejemplo, Maxima puede extraer un factor del denominador
2591          de una funci�n racional, pero no puede factorizar el resto.
2592          La funci�n 'grind' muestra la forma nominal ''integrate' del
2593          resultado.  V�ase tambi�n 'integrate_use_rootsof' para m�s
2594          informaci�n sobre integrales de funciones racionales.
2595
2596               (%i1) expand ((x-4) * (x^3+2*x+1));
2597                                   4      3      2
2598               (%o1)              x  - 4 x  + 2 x  - 7 x - 4
2599               (%i2) integrate (1/%, x);
2600                                             /  2
2601                                             [ x  + 4 x + 18
2602                                             I ------------- dx
2603                                             ]  3
2604                                log(x - 4)   / x  + 2 x + 1
2605               (%o2)            ---------- - ------------------
2606                                    73               73
2607               (%i3) grind (%);
2608               log(x-4)/73-('integrate((x^2+4*x+18)/(x^3+2*x+1),x))/73$
2609
2610        * Definici�n de una funci�n mediante una integral.  El cuerpo de
2611          una funci�n no se eval�a cuando �sta se define, de manera que
2612          el cuerpo de 'f_1' en este ejemplo contiene la forma nominal
2613          de 'integrate'.  El operador comilla-comilla '''' hace que se
2614          eval�e la integral y su resultado ser� el que defina a la
2615          funci�n 'f_2'.
2616
2617               (%i1) f_1 (a) := integrate (x^3, x, 1, a);
2618                                                    3
2619               (%o1)           f_1(a) := integrate(x , x, 1, a)
2620               (%i2) ev (f_1 (7), nouns);
2621               (%o2)                          600
2622               (%i3) /* Note parentheses around integrate(...) here */
2623                     f_2 (a) := ''(integrate (x^3, x, 1, a));
2624                                                  4
2625                                                 a    1
2626               (%o3)                   f_2(a) := -- - -
2627                                                 4    4
2628               (%i4) f_2 (7);
2629               (%o4)                          600
2630
2631 -- Variable del sistema: integration_constant
2632     Valor por defecto: '%c'
2633
2634     Cuando una constante de integraci�n se crea durante la integraci�n
2635     definida de una ecuaci�n, el nombre de la constante se construye
2636     concatenando 'integration_constant' y
2637     'integration_constant_counter'.
2638
2639     A 'integration_constant' se le puede asignar un s�mbolo cualquiera.
2640
2641     Ejemplos:
2642
2643          (%i1) integrate (x^2 = 1, x);
2644                                     3
2645                                    x
2646          (%o1)                     -- = x + %c1
2647                                    3
2648          (%i2) integration_constant : 'k;
2649          (%o2)                           k
2650          (%i3) integrate (x^2 = 1, x);
2651                                      3
2652                                     x
2653          (%o3)                      -- = x + k2
2654                                     3
2655
2656 -- Variable del sistema: integration_constant_counter
2657     Valor por defecto: 0
2658
2659     Cuando una constante de integraci�n se crea durante la integraci�n
2660     definida de una ecuaci�n, el nombre de la constante se construye
2661     concatenando 'integration_constant' y
2662     'integration_constant_counter'.
2663
2664     La variable 'integration_constant_counter' se incrementa antes de
2665     construir la constante de integraci�n siguiente.
2666
2667     Ejemplos:
2668
2669          (%i1) integrate (x^2 = 1, x);
2670                                     3
2671                                    x
2672          (%o1)                     -- = x + %c1
2673                                    3
2674          (%i2) integrate (x^2 = 1, x);
2675                                     3
2676                                    x
2677          (%o2)                     -- = x + %c2
2678                                    3
2679          (%i3) integrate (x^2 = 1, x);
2680                                     3
2681                                    x
2682          (%o3)                     -- = x + %c3
2683                                    3
2684          (%i4) reset (integration_constant_counter);
2685          (%o4)            [integration_constant_counter]
2686          (%i5) integrate (x^2 = 1, x);
2687                                     3
2688                                    x
2689          (%o5)                     -- = x + %c1
2690                                    3
2691
2692 -- Variable optativa: integrate_use_rootsof
2693     Valor por defecto: 'false'
2694
2695     Si 'integrate_use_rootsof' vale 'true' y el denominador de una
2696     funci�n racional no se puede factorizar, 'integrate' devuelve la
2697     integral como una suma respecto de las ra�ces desconocidas del
2698     denominador.
2699
2700     Por ejemplo, d�ndole a 'integrate_use_rootsof' el valor 'false',
2701     'integrate' devuelve la integral no resuelta de la funci�n racional
2702     en forma nominal:
2703
2704          (%i1) integrate_use_rootsof: false$
2705          (%i2) integrate (1/(1+x+x^5), x);
2706                  /  2
2707                  [ x  - 4 x + 5
2708                  I ------------ dx                            2 x + 1
2709                  ]  3    2                2            5 atan(-------)
2710                  / x  - x  + 1       log(x  + x + 1)          sqrt(3)
2711          (%o2)   ----------------- - --------------- + ---------------
2712                          7                 14             7 sqrt(3)
2713
2714     Si ahora se le da a la variable el valor 'true', la parte no
2715     resuelta de la integral se expresa como una suma cuyos sumandos
2716     dependen de las ra�ces del denominador de la funci�n racional:
2717
2718          (%i3) integrate_use_rootsof: true$
2719          (%i4) integrate (1/(1+x+x^5), x);
2720                ====        2
2721                \       (%r4  - 4 %r4 + 5) log(x - %r4)
2722                 >      -------------------------------
2723                /                    2
2724                ====            3 %r4  - 2 %r4
2725                                  3      2
2726                %r4 in rootsof(%r4  - %r4  + 1, %r4)
2727          (%o4) ----------------------------------------------------------
2728                         7
2729
2730                                                                 2 x + 1
2731                                             2            5 atan(-------)
2732                                        log(x  + x + 1)          sqrt(3)
2733                                      - --------------- + ---------------
2734                                              14             7 sqrt(3)
2735
2736     Alternativamente, el usuario puede calcular las ra�ces del
2737     denominador separadamente y luego representar el integrando en
2738     funci�n de dichas ra�ces, como por ejemplo '1/((x - a)*(x - b)*(x -
2739     c))' o '1/((x^2 - (a+b)*x + a*b)*(x - c))' si el denominador es un
2740     polinomio de tercer grado.  En algunos casos, esto ayudar� a Maxima
2741     mejorar sus resultados.
2742
2743 -- Funci�n: ldefint (<expr>, <x>, <a>, <b>)
2744     Calcula la integral definida de <expr> utilizando 'limit' tras el
2745     c�lculo de la integral indefinida de <expr> respecto a <x> en los
2746     extremos de integraci�n <b> y <a>.  Si no consigue calcular la
2747     integral definida, 'ldefint' devuelve una expresi�n con los l�mites
2748     en forma nominal.
2749
2750     La funci�n 'integrate' no llama a 'ldefint', de modo que la
2751     ejecuci�n de 'ldefint (<expr>, <x>, <a>, <b>)' puede dar un
2752     resultado diferente que 'integrate (<expr>, <x>, <a>, <b>)'.  La
2753     funci�n 'ldefint' siempre utiliza el mismo m�todo para calcular la
2754     integral definida, mientras que 'integrate' puede hacer uso de
2755     varias heur�sticas y reconocer as� casos especiales.
2756
2757 -- Funci�n: residue (<expr>, <z>, <z_0>)
2758     Calcula el residuo en el plano complejo de la expresi�n <expr>
2759     cuando la variable <z> toma el valor <z_0>.  El residuo es el
2760     coeficiente de '(<z> - <z_0>)^(-1)' en el desarrollo de Laurent de
2761     <expr>.
2762
2763          (%i1) residue (s/(s**2+a**2), s, a*%i);
2764                                          1
2765          (%o1)                           -
2766                                          2
2767          (%i2) residue (sin(a*x)/x**4, x, 0);
2768                                           3
2769                                          a
2770          (%o2)                         - --
2771                                          6
2772
2773 -- Funci�n: risch (<expr>, <x>)
2774     Integra <expr> respecto de <x> utilizando el caso trascendental del
2775     algoritmo de Risch.  El caso algebraico del algoritmo de Risch no
2776     se ha implementado.  Este m�todo trata los casos de exponenciales y
2777     logaritmos anidados que no resuelve el procedimiento principal de
2778     'integrate'.  La funci�n 'integrate' llamar� autom�ticamente a
2779     'risch' si se presentan estos casos.
2780
2781     Si la variable 'erfflag' vale 'false', evita que 'risch' introduzca
2782     la funci�n 'erf' en la respuesta si �sta no estaba presente
2783     previamente en el integrando.
2784
2785          (%i1) risch (x^2*erf(x), x);
2786                                                                  2
2787                       3                      2                - x
2788                  %pi x  erf(x) + (sqrt(%pi) x  + sqrt(%pi)) %e
2789          (%o1)   -------------------------------------------------
2790                                        3 %pi
2791          (%i2) diff(%, x), ratsimp;
2792                                       2
2793          (%o2)                       x  erf(x)
2794
2795 -- Funci�n: tldefint (<expr>, <x>, <a>, <b>)
2796     Equivale a 'ldefint' cuando 'tlimswitch' vale 'true'.
2797
2798
2799File: maxima.info,  Node: Introducci�n a QUADPACK,  Next: Funciones y variables para QUADPACK,  Prev: Funciones y variables para integraci�n,  Up: Integraci�n
2800
280119.3 Introducci�n a QUADPACK
2802============================
2803
2804QUADPACK es un conjunto de funciones para el c�lculo num�rico de
2805integrales definidas de una variable.  Se cre� a partir de un trabajo
2806conjunto de R. Piessens (1), E. de Doncker (2), C. Ueberhuber (3), and
2807D. Kahaner (4).
2808
2809La librer�a QUADPACK incluida en Maxima es una traducci�n autom�tica
2810(mediante el programa 'f2cl') del c�digo fuente Fortran de QUADPACK tal
2811como se encuentra en la SLATEC Common Mathematical Library,Versi�n 4.1
2812(5).  La librer�a SLATEC est� fechada en julio de 1993, pero las
2813funciones QUADPACK fueron escritas algunos a�os antes.  Hay otra versi�n
2814de QUADPACK en Netlib (6), pero no est� claro hasta qu� punto difiere de
2815la que forma parte de la librer�a SLATEC.
2816
2817Las funciones QUADPACK incluidas en Maxima son todas autom�ticas, en el
2818sentido de que estas funciones intentan calcular sus resultados con una
2819exactitud especificada, requiriendo un n�mero indeterminado de
2820evaluaciones de funciones.  La traducci�n a Lisp que Maxima hace de
2821QUADPACK incluye tambi�n algunas funciones que no son autom�ticas, pero
2822que no son accesibles desde el nivel de Maxima.
2823
2824Se puede encontrar m�s informaci�n sobre QUADPACK en el libro (7).
2825
282619.3.1 Perspectiva general
2827--------------------------
2828
2829'quad_qag'
2830     Integraci�n de una funci�n general en un intervalo finito.  La
2831     funci�n 'quad_qag' implementa un integrador global adaptativo
2832     simple utilizando una estrategia de Aind (Piessens, 1973).  Se
2833     puede escoger entre seis pares de f�rmulas de cuadratura de
2834     Gauss-Kronrod para la regla de evaluaci�n.  Las reglas de rango
2835     superior son �tiles en los casos en los que los integrandos tienen
2836     un alto grado de oscilaci�n.
2837
2838'quad_qags'
2839     Integraci�n de una funci�n general en un intervalo finito.  La
2840     funci�n 'quad_qags' implementa la subdivisi�n de intervalos global
2841     adaptativa con extrapolaci�n (de Doncker, 1978) mediante el
2842     algoritmo Epsilon (Wynn, 1956).
2843
2844'quad_qagi'
2845     Integraci�n de una funci�n general en un intervalo infinito o
2846     semi-infinito.  El intervalo se proyecta sobre un intervalo finito
2847     y luego se aplica la misma estrategia que en 'quad_qags'.
2848
2849'quad_qawo'
2850     Integraci�n de cos(omega x) f(x) o sin(omega x) f(x) en un
2851     intervalo finito, siendo omega una constante.  La regla de
2852     evaluaci�n se basa en la t�cnica modificada de Clenshaw-Curtis.  La
2853     funci�n 'quad_qawo' aplica la subdivisi�n adaptativa con
2854     extrapolaci�n, de forma similar a 'quad_qags'.
2855
2856'quad_qawf'
2857     Calcula la transformada seno o coseno de Fourier en un intervalo
2858     semi-infinito.  Se aplica el mismo m�todo que en 'quad_qawo' a
2859     sucesivos intervalos finitos, acelerando la convergencia mediante
2860     el algoritmo Epsilon (Wynn, 1956).
2861
2862'quad_qaws'
2863     Integraci�n de w(x) f(x) en un intervalo finito [a, b], siendo w
2864     una funci�n de la forma (x - a)^alpha (b - x)^beta v(x), con v(x)
2865     igual a 1, a log(x - a), a log(b - x) o a log(x - a) log(b - x) y
2866     con alpha > -1, y beta > -1.  Se aplica una estrategia de
2867     subdivisi�n adaptativa global, con integraci�n de Clenshaw-Curtis
2868     modificada en los subintervalos que contienen a a y a b.
2869
2870'quad_qawc'
2871     Calcula el valor principal de Cauchy de f(x)/(x - c) en un
2872     intervalo finito (a, b) para una c dada.  La estrategia es global
2873     adaptativa, utilizando la integraci�n de Clenshaw-Curtis modificada
2874     en los subintervalos que contienen a x = c.
2875
2876'quad_qagp'
2877     B�sicamente hace lo mismo que 'quad_qags', pero los puntos de
2878     singularidad o discontinuidad deben ser aportados por el usuario.
2879     Esto hace que el c�lculo de una buena soluci�n sea m�s f�cil para
2880     el integrador.
2881
2882   ---------- Footnotes ----------
2883
2884   (1) Applied Mathematics and Programming Division, K.U. Leuven
2885
2886   (2) Applied Mathematics and Programming Division, K.U. Leuven
2887
2888   (3) Institut f�r Mathematik, T.U. Wien
2889
2890   (4) National Bureau of Standards, Washington, D.C., U.S.A
2891
2892   (5) <http://www.netlib.org/slatec>
2893
2894   (6) <http://www.netlib.org/quadpack>
2895
2896   (7) R. Piessens, E. de Doncker-Kapenga, C.W. Uberhuber, and D.K.
2897Kahaner.  QUADPACK: A Subroutine Package for Automatic Integration.
2898Berlin: Springer-Verlag, 1983, ISBN 0387125531.
2899
2900
2901File: maxima.info,  Node: Funciones y variables para QUADPACK,  Prev: Introducci�n a QUADPACK,  Up: Integraci�n
2902
290319.4 Funciones y variables para QUADPACK
2904========================================
2905
2906 -- Funci�n: quad_qag (<f(x)>, <x>, <a>, <b>, <key>, [<epsrel>,
2907          <epsabs>, <limit>])
2908 -- Funci�n: quad_qag (<f>, <x>, <a>, <b>, <key>, [<epsrel>, <epsabs>,
2909          <limit>])
2910     Integraci�n de una funci�n general en un intervalo finito.  La
2911     funci�n 'quad_qag' implementa un integrador global adaptativo
2912     simple utilizando una estrategia de Aind (Piessens, 1973).  Se
2913     puede escoger entre seis pares de f�rmulas de cuadratura de
2914     Gauss-Kronrod para la regla de evaluaci�n.  Las reglas de rango
2915     superior son �tiles en los casos en los que los integrandos tienen
2916     un alto grado de oscilaci�n.
2917
2918     La funci�n 'quad_qag' calcula num�ricamente la integral
2919
2920     integrate (f(x), x, a, b)
2921
2922     utilizando un integrador adaptativo simple.
2923
2924     La funci�n a integrar es <f(x)>, con variable independiente <x>,
2925     siendo el intervalo de integraci�n el comprendido entre <a> y <b>.
2926     El argumento <key> indica el integrador a utilizar y debe ser un
2927     n�mero entero entre 1 y 6, ambos inclusive.  El valor de <key>
2928     selecciona el orden de la regla de integraci�n de Gauss-Kronrod.
2929     Las reglas de rango superior son �tiles en los casos en los que los
2930     integrandos tienen un alto grado de oscilaci�n.
2931
2932     El integrando se puede especificar con el nombre de una funci�n u
2933     operador de Maxima o de Lisp, como una expresi�n lambda o como una
2934     expresi�n general de Maxima.
2935
2936     La integraci�n num�rica se hace de forma adaptativa particionando
2937     la regi�n de integraci�n en subintervalos hasta conseguir la
2938     precisi�n requerida.
2939
2940     Los argumentos opcionales pueden especificarse en cualquier orden.
2941     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
2942
2943     'epsrel'
2944          Error relativo deseado de la aproximaci�n.  El valor por
2945          defecto es 1d-8.
2946     'epsabs'
2947          Error absoluto deseado de la aproximaci�n.  El valor por
2948          defecto es 0.
2949     'limit'
2950          Tama�o del array interno utilizado para realizar la
2951          cuadratura.  <limit> es el n�mero m�ximo de subintervalos a
2952          utilizar.  El valor por defecto es 200.
2953
2954     La funci�n 'quad_qag' devuelve una lista de cuatro elementos:
2955
2956        * la aproximaci�n a la integral,
2957        * el error absoluto estimado de la aproximaci�n,
2958        * el n�mero de evaluaciones del integrando,
2959        * un c�digo de error.
2960
2961     El c�digo de error (el cuarto elemento del resultado) puede tener
2962     los siguientes valores:
2963
2964     '0'
2965          si no ha habido problemas;
2966     '1'
2967          si se utilizaron demasiados intervalos;
2968     '2'
2969          si se encontr� un n�mero excesivo de errores de redondeo;
2970     '3'
2971          si el integrando ha tenido un comportamiento extra�o frente a
2972          la integraci�n;
2973     '6'
2974          si los argumentos de entrada no son v�lidos.
2975
2976     Ejemplos:
2977
2978          (%i1) quad_qag (x^(1/2)*log(1/x), x, 0, 1, 3, 'epsrel=5d-8);
2979          (%o1)    [.4444444444492108, 3.1700968502883E-9, 961, 0]
2980          (%i2) integrate (x^(1/2)*log(1/x), x, 0, 1);
2981                                          4
2982          (%o2)                           -
2983                                          9
2984
2985 -- Funci�n: quad_qags (<f(x)>, <x>, <a>, <b>, [<epsrel>, <epsabs>,
2986          <limit>])
2987 -- Funci�n: quad_qags (<f>, <x>, <a>, <b>, [<epsrel>, <epsabs>,
2988          <limit>])
2989     Integraci�n de una funci�n general en un intervalo finito.  La
2990     funci�n 'quad_qags' implementa la subdivisi�n de intervalos global
2991     adaptativa con extrapolaci�n (de Doncker, 1978) mediante el
2992     algoritmo Epsilon (Wynn, 1956).
2993
2994     La funci�n 'quad_qags' calcula la integral
2995
2996     integrate (f(x), x, a, b)
2997
2998     La funci�n a integrar es <f(x)>, de variable independiente <x>,
2999     siendo el intervalo de integraci�n el comprendido entre <a> y <b>.
3000
3001     El integrando se puede especificar con el nombre de una funci�n u
3002     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3003     expresi�n general de Maxima.
3004
3005     Los argumentos opcionales pueden especificarse en cualquier orden.
3006     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3007
3008     'epsrel'
3009          Error relativo deseado de la aproximaci�n.  El valor por
3010          defecto es 1d-8.
3011     'epsabs'
3012          Error absoluto deseado de la aproximaci�n.  El valor por
3013          defecto es 0.
3014     'limit'
3015          Tama�o del array interno utilizado para realizar la
3016          cuadratura.  <limit> es el n�mero m�ximo de subintervalos a
3017          utilizar.  El valor por defecto es 200.
3018
3019     La funci�n 'quad_qags' devuelve una lista de cuatro elementos:
3020
3021        * la aproximaci�n a la integral,
3022        * el error absoluto estimado de la aproximaci�n,
3023        * el n�mero de evaluaciones del integrando,
3024        * un c�digo de error.
3025
3026     El c�digo de error (el cuarto elemento del resultado) puede tener
3027     los siguientes valores:
3028
3029     '0'
3030          si no ha habido problemas;
3031     '1'
3032          si se utilizaron demasiados intervalos;
3033     '2'
3034          si se encontr� un n�mero excesivo de errores de redondeo;
3035     '3'
3036          si el integrando ha tenido un comportamiento extra�o frente a
3037          la integraci�n;
3038     '4'
3039          fallo de convergencia;
3040     '5'
3041          la integral es probablemente divergente o de convergencia
3042          lenta;
3043     '6'
3044          si los argumentos de entrada no son v�lidos.
3045
3046     Ejemplos:
3047
3048          (%i1) quad_qags (x^(1/2)*log(1/x), x, 0, 1, 'epsrel=1d-10);
3049          (%o1)   [.4444444444444448, 1.11022302462516E-15, 315, 0]
3050
3051     N�tese que 'quad_qags' es m�s precisa y eficiente que 'quad_qag'
3052     para este integrando.
3053
3054 -- Funci�n: quad_qagi (<f(x)>, <x>, <a>, <b>, [<epsrel>, <epsabs>,
3055          <limit>])
3056 -- Funci�n: quad_qagi (<f>, <x>, <a>, <b>, [<epsrel>, <epsabs>,
3057          <limit>])
3058
3059     Integraci�n de una funci�n general en un intervalo infinito o
3060     semi-infinito.  El intervalo se proyecta sobre un intervalo finito
3061     y luego se aplica la misma estrategia que en 'quad_qags'.
3062
3063     La funci�n 'quad_qagi' calcula cualquiera las siguientes
3064     integrales:
3065
3066     integrate (f(x), x, a, inf)
3067
3068     integrate (f(x), x, minf, a)
3069
3070     integrate (f(x), x, minf, inf)
3071
3072     utilizando la rutina QAGI de Quadpack QAGI. La funci�n a integrar
3073     es <f(x)>, con variable independiente <x>, siendo el intervalo de
3074     integraci�n de rango infinito.
3075
3076     El integrando se puede especificar con el nombre de una funci�n u
3077     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3078     expresi�n general de Maxima.
3079
3080     Uno de los l�mites de integraci�n debe ser infinito.  De no ser
3081     as�, 'quad_qagi' devolver� una forma nominal.
3082
3083     Los argumentos opcionales pueden especificarse en cualquier orden.
3084     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3085
3086     'epsrel'
3087          Error relativo deseado de la aproximaci�n.  El valor por
3088          defecto es 1d-8.
3089     'epsabs'
3090          Error absoluto deseado de la aproximaci�n.  El valor por
3091          defecto es 0.
3092     'limit'
3093          Tama�o del array interno utilizado para realizar la
3094          cuadratura.  <limit> es el n�mero m�ximo de subintervalos a
3095          utilizar.  El valor por defecto es 200.
3096
3097     La funci�n 'quad_qagi' devuelve una lista de cuatro elementos:
3098
3099        * la aproximaci�n a la integral,
3100        * el error absoluto estimado de la aproximaci�n,
3101        * el n�mero de evaluaciones del integrando,
3102        * un c�digo de error.
3103
3104     El c�digo de error (el cuarto elemento del resultado) puede tener
3105     los siguientes valores:
3106
3107     '0'
3108          si no ha habido problemas;
3109     '1'
3110          si se utilizaron demasiados intervalos;
3111     '2'
3112          si se encontr� un n�mero excesivo de errores de redondeo;
3113     '3'
3114          si el integrando ha tenido un comportamiento extra�o frente a
3115          la integraci�n;
3116     '4'
3117          fallo de convergencia;
3118     '5'
3119          la integral es probablemente divergente o de convergencia
3120          lenta;
3121     '6'
3122          si los argumentos de entrada no son v�lidos.
3123
3124     Ejemplos:
3125
3126          (%i1) quad_qagi (x^2*exp(-4*x), x, 0, inf, 'epsrel=1d-8);
3127          (%o1)        [0.03125, 2.95916102995002E-11, 105, 0]
3128          (%i2) integrate (x^2*exp(-4*x), x, 0, inf);
3129                                         1
3130          (%o2)                          --
3131                                         32
3132
3133 -- Funci�n: quad_qawc (<f(x)>, <x>, <c>, <a>, <b>, [<epsrel>, <epsabs>,
3134          <limit>])
3135 -- Funci�n: quad_qawc (<f>, <x>, <c>, <a>, <b>, [<epsrel>, <epsabs>,
3136          <limit>])
3137     Calcula el valor principal de Cauchy de f(x)/(x - c) en un
3138     intervalo finito (a, b) para una c dada.  La estrategia es global
3139     adaptativa, utilizando la integraci�n de Clenshaw-Curtis modificada
3140     en los subintervalos que contienen a x = c.
3141
3142     La funci�n 'quad_qawc' calcula el valor principal de Cauchy de
3143
3144     integrate (f(x)/(x - c), x, a, b)
3145
3146     utilizando la rutina QAWC de Quadpack.  La funci�n a integrar es
3147     '<f(x)>/(<x> - <c>)', con variable independiente <x>, siendo el
3148     intervalo de integraci�n el comprendido entre <a> y <b>.
3149
3150     El integrando se puede especificar con el nombre de una funci�n u
3151     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3152     expresi�n general de Maxima.
3153
3154     Los argumentos opcionales pueden especificarse en cualquier orden.
3155     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3156
3157     'epsrel'
3158          Error relativo deseado de la aproximaci�n.  El valor por
3159          defecto es 1d-8.
3160     'epsabs'
3161          Error absoluto deseado de la aproximaci�n.  El valor por
3162          defecto es 0.
3163     'limit'
3164          Tama�o del array interno utilizado para realizar la
3165          cuadratura.  <limit> es el n�mero m�ximo de subintervalos a
3166          utilizar.  El valor por defecto es 200.
3167
3168     'quad_qawc' returns a list of four elements:
3169
3170        * la aproximaci�n a la integral,
3171        * el error absoluto estimado de la aproximaci�n,
3172        * el n�mero de evaluaciones del integrando,
3173        * un c�digo de error.
3174
3175     El c�digo de error (el cuarto elemento del resultado) puede tener
3176     los siguientes valores:
3177
3178     '0'
3179          si no ha habido problemas;
3180     '1'
3181          si se utilizaron demasiados intervalos;
3182     '2'
3183          si se encontr� un n�mero excesivo de errores de redondeo;
3184     '3'
3185          si el integrando ha tenido un comportamiento extra�o frente a
3186          la integraci�n;
3187     '6'
3188          si los argumentos de entrada no son v�lidos.
3189
3190     Ejemplos:
3191
3192          (%i1) quad_qawc (2^(-5)*((x-1)^2+4^(-5))^(-1), x, 2, 0, 5,
3193                           'epsrel=1d-7);
3194          (%o1)    [- 3.130120337415925, 1.306830140249558E-8, 495, 0]
3195          (%i2) integrate (2^(-alpha)*(((x-1)^2 + 4^(-alpha))*(x-2))^(-1),
3196                           x, 0, 5);
3197          Principal Value
3198                  alpha        9 4                 9
3199                 4      log(-------------- + --------------)
3200                             alpha + 3        alpha + 3
3201                            4          + 4   4          + 4
3202          (%o2) (-------------------------------------------
3203                                   alpha
3204                                2 4      + 2
3205              3 alpha                   3 alpha
3206              -------                   -------
3207                 2          alpha/2        2              alpha/2
3208             4        atan(4       )   4        atan(- 4 4       )
3209           - ----------------------- + ---------------------------)
3210                    alpha                       alpha
3211                   4      + 1                  4      + 1
3212            alpha
3213          /2
3214          (%i3) ev (%, alpha=5, numer);
3215          (%o3)                    - 3.130120337415917
3216
3217 -- Funci�n: quad_qawf (<f(x)>, <x>, <a>, <omega>, <trig>, [<epsabs>,
3218          <limit>, <maxp1>, <limlst>])
3219 -- Funci�n: quad_qawf (<f>, <x>, <a>, <omega>, <trig>, [<epsabs>,
3220          <limit>, <maxp1>, <limlst>])
3221     Calcula la transformada seno o coseno de Fourier en un intervalo
3222     semi-infinito.  Se aplica el mismo m�todo que en 'quad_qawo' a
3223     sucesivos intervalos finitos, acelerando la convergencia mediante
3224     el algoritmo Epsilon (Wynn, 1956).
3225
3226     La funci�n 'quad_qawf' calcula la integral
3227
3228     integrate (f(x)*w(x), x, a, inf)
3229
3230     La funci�n peso w se selecciona mediante <trig>:
3231
3232     'cos'
3233          w(x) = cos (omega x)
3234     'sin'
3235          w(x) = sin (omega x)
3236
3237     El integrando se puede especificar con el nombre de una funci�n u
3238     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3239     expresi�n general de Maxima
3240
3241     Los argumentos opcionales pueden especificarse en cualquier orden.
3242     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3243
3244     'epsabs'
3245          El error absoluto deseado para la aproximaci�n.  El valor por
3246          defecto es 1d-10.
3247     'limit'
3248          Tama�o del arreglo interno de trabajo.  (<limit> - <limlst>)/2
3249          es el n�mero m�ximo de subintervalos para la partici�n.  El
3250          valor por defecto es 200.
3251     'maxp1'
3252          N�mero m�ximo de momentos de Chebyshev.  Debe ser mayor que 0.
3253          El valor por defecto es 100.
3254     'limlst'
3255          Cota superior del n�mero de ciclos.  Debe ser mayor o igual
3256          que 3.  El valor por defecto es 10.
3257
3258     'quad_qawf' returns a list of four elements:
3259
3260        * la aproximaci�n a la integral,
3261        * el error absoluto estimado de la aproximaci�n,
3262        * el n�mero de evaluaciones del integrando,
3263        * un c�digo de error.
3264
3265     El c�digo de error (el cuarto elemento del resultado) puede tener
3266     los siguientes valores:
3267
3268     '0'
3269          si no ha habido problemas;
3270     '1'
3271          si se utilizaron demasiados intervalos;
3272     '2'
3273          si se encontr� un n�mero excesivo de errores de redondeo;
3274     '3'
3275          si el integrando ha tenido un comportamiento extra�o frente a
3276          la integraci�n;
3277     '6'
3278          si los argumentos de entrada no son v�lidos.
3279
3280     Ejemplos:
3281
3282          (%i1) quad_qawf (exp(-x^2), x, 0, 1, 'cos, 'epsabs=1d-9);
3283          (%o1)   [.6901942235215714, 2.84846300257552E-11, 215, 0]
3284          (%i2) integrate (exp(-x^2)*cos(x), x, 0, inf);
3285                                    - 1/4
3286                                  %e      sqrt(%pi)
3287          (%o2)                   -----------------
3288                                          2
3289          (%i3) ev (%, numer);
3290          (%o3)                   .6901942235215714
3291
3292 -- Funci�n: quad_qawo (<f(x)>, <x>, <a>, <b>, <omega>, <trig>,
3293          [<epsrel>, <epsabs>, <limit>, <maxp1>, <limlst>])
3294 -- Funci�n: quad_qawo (<f>, <x>, <a>, <b>, <omega>, <trig>, [<epsrel>,
3295          <epsabs>, <limit>, <maxp1>, <limlst>])
3296     Integraci�n de cos(omega x) f(x) o sin(omega x) f(x) en un
3297     intervalo finito, siendo omega una constante.  La regla de
3298     evaluaci�n se basa en la t�cnica modificada de Clenshaw-Curtis.  La
3299     funci�n 'quad_qawo' aplica la subdivisi�n adaptativa con
3300     extrapolaci�n, de forma similar a 'quad_qags'.
3301
3302     La funci�n 'quad_qawo' realiza la integraci�n utilizando la rutina
3303     QAWO de Quadpack:
3304
3305     integrate (f(x)*w(x), x, a, b)
3306
3307     La funci�n peso w se selecciona mediante <trig>:
3308
3309     'cos'
3310          w(x) = cos (omega x)
3311     'sin'
3312          w(x) = sin (omega x)
3313
3314     El integrando se puede especificar con el nombre de una funci�n u
3315     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3316     expresi�n general de Maxima
3317
3318     Los argumentos opcionales pueden especificarse en cualquier orden.
3319     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3320
3321     'epsrel'
3322          El error absoluto deseado para la aproximaci�n.  El valor por
3323          defecto es 1d-8.
3324     'epsabs'
3325          Error absoluto deseado de la aproximaci�n.  El valor por
3326          defecto es 0.
3327     'limit'
3328          Tama�o del arreglo interno de trabajo.  <limit>/2 es el n�mero
3329          m�ximo de subintervalos para la partici�n.  El valor por
3330          defecto es 200.
3331     'maxp1'
3332          N�mero m�ximo de momentos de Chebyshev.  Debe ser mayor que 0.
3333          El valor por defecto es 100.
3334     'limlst'
3335          Cota superior del n�mero de ciclos.  Debe ser mayor o igual
3336          que 3.  El valor por defecto es 10.
3337
3338     'quad_qawo' returns a list of four elements:
3339
3340        * la aproximaci�n a la integral,
3341        * el error absoluto estimado de la aproximaci�n,
3342        * el n�mero de evaluaciones del integrando,
3343        * un c�digo de error.
3344
3345     El c�digo de error (el cuarto elemento del resultado) puede tener
3346     los siguientes valores:
3347
3348     '0'
3349          si no ha habido problemas;
3350     '1'
3351          si se utilizaron demasiados intervalos;
3352     '2'
3353          si se encontr� un n�mero excesivo de errores de redondeo;
3354     '3'
3355          si el integrando ha tenido un comportamiento extra�o frente a
3356          la integraci�n;
3357     '6'
3358          si los argumentos de entrada no son v�lidos.
3359
3360     Ejemplos:
3361
3362          (%i1) quad_qawo (x^(-1/2)*exp(-2^(-2)*x), x, 1d-8, 20*2^2, 1, cos);
3363          (%o1)     [1.376043389877692, 4.72710759424899E-11, 765, 0]
3364          (%i2) rectform (integrate (x^(-1/2)*exp(-2^(-alpha)*x) * cos(x),
3365                                     x, 0, inf));
3366                             alpha/2 - 1/2            2 alpha
3367                  sqrt(%pi) 2              sqrt(sqrt(2        + 1) + 1)
3368          (%o2)   -----------------------------------------------------
3369                                         2 alpha
3370                                   sqrt(2        + 1)
3371          (%i3) ev (%, alpha=2, numer);
3372          (%o3)                     1.376043390090716
3373
3374 -- Funci�n: quad_qaws (<f(x)>, <x>, <a>, <b>, <alpha>, <beta>, <wfun>,
3375          [<epsrel>, <epsabs>, <limit>])
3376 -- Funci�n: quad_qaws (<f>, <x>, <a>, <b>, <alpha>, <beta>, <wfun>,
3377          [<epsrel>, <epsabs>, <limit>])
3378     Integraci�n de w(x) f(x) en un intervalo finito [a, b], siendo w
3379     una funci�n de la forma (x - a)^alpha (b - x)^beta v(x), con v(x)
3380     igual a 1, a log(x - a), a log(b - x) o a log(x - a) log(b - x) y
3381     con alpha > -1, y beta > -1.  Se aplica una estrategia de
3382     subdivisi�n adaptativa global, con integraci�n de Clenshaw-Curtis
3383     modificada en los subintervalos que contienen a a y a b.
3384
3385     La funci�n 'quad_qaws' realiza la integraci�n utizando la rutina
3386     QAWS de Quadpack:
3387
3388     integrate (f(x)*w(x), x, a, b)
3389
3390     La funci�n peso w se selecciona mediante <wfun>:
3391
3392     '1'
3393          w(x) = (x - a)^alfa (b - x)^beta
3394     '2'
3395          w(x) = (x - a)^alfa (b - x)^beta log(x - a)
3396     '3'
3397          w(x) = (x - a)^alfa (b - x)^beta log(b - x)
3398     '4'
3399          w(x) = (x - a)^alfa (b - x)^beta log(x - a) log(b - x)
3400
3401     El integrando se puede especificar con el nombre de una funci�n u
3402     operador de Maxima o de Lisp, como una expresi�n lambda o como una
3403     expresi�n general de Maxima
3404
3405     Los argumentos opcionales pueden especificarse en cualquier orden.
3406     Todos ellos toman la forma 'key=val'.  Tales argumentos son:
3407
3408     'epsrel'
3409          El error absoluto deseado para la aproximaci�n.  El valor por
3410          defecto es 1d-8.
3411     'epsabs'
3412          Error absoluto deseado de la aproximaci�n.  El valor por
3413          defecto es 0.
3414     'limit'
3415          Tama�o del array interno utilizado para realizar la
3416          cuadratura.  (<limit> - <limlst>)/2 es el n�mero m�ximo de
3417          subintervalos a utilizar.  El valor por defecto es 200.
3418
3419     'quad_qaws' returns a list of four elements:
3420
3421        * la aproximaci�n a la integral,
3422        * el error absoluto estimado de la aproximaci�n,
3423        * el n�mero de evaluaciones del integrando,
3424        * un c�digo de error.
3425
3426     El c�digo de error (el cuarto elemento del resultado) puede tener
3427     los siguientes valores:
3428
3429     '0'
3430          si no ha habido problemas;
3431     '1'
3432          si se utilizaron demasiados intervalos;
3433     '2'
3434          si se encontr� un n�mero excesivo de errores de redondeo;
3435     '3'
3436          si el integrando ha tenido un comportamiento extra�o frente a
3437          la integraci�n;
3438     '6'
3439          si los argumentos de entrada no son v�lidos.
3440
3441     Ejemplos:
3442
3443          (%i1) quad_qaws (1/(x+1+2^(-4)), x, -1, 1, -0.5, -0.5, 1,
3444                           'epsabs=1d-9);
3445          (%o1)     [8.750097361672832, 1.24321522715422E-10, 170, 0]
3446          (%i2) integrate ((1-x*x)^(-1/2)/(x+1+2^(-alpha)), x, -1, 1);
3447                 alpha
3448          Is  4 2      - 1  positive, negative, or zero?
3449
3450          pos;
3451                                    alpha         alpha
3452                             2 %pi 2      sqrt(2 2      + 1)
3453          (%o2)              -------------------------------
3454                                         alpha
3455                                      4 2      + 2
3456          (%i3) ev (%, alpha=4, numer);
3457          (%o3)                     8.750097361672829
3458
3459 -- Fuci�n: quad_qagp (<f(x)>, <x>, <a>, <b>, <points>, [<epsrel>,
3460          <epsabs>, <limit>])
3461 -- Fuci�n: quad_qagp (<f>, <x>, <a>, <b>, <points>, [<epsrel>,
3462          <epsabs>, <limit>])
3463
3464     Integra una funci�n general sobre un intervalo acotado.  La funci�n
3465     'quad_qagp' implementa un m�todo adaptativo global de subdivisi�n
3466     del intervalo con extrapolaci�n (de Doncker, 1978) basado en el
3467     algoritmo Epsilon (Wynn, 1956).
3468
3469     'quad_qagp' calcula la integral
3470
3471     integrate (f(x), x, a, b)
3472
3473     La funci�n a integrar es <f(x)>, con variable independiente <x>, en
3474     el intervalo limitado por <a> y <b>.
3475
3476     El integrando puede especificarse mediante el nombre de una funci�n
3477     de Maxima o de Lisp o un operador, como una expresi�n lambda de
3478     Maxima, o como una expresi�n general de Maxima.
3479
3480     Para ayudar al integrador, el usuario debe aportar una lista de
3481     puntos donde el integrando es singular o discontinuo.
3482
3483     Las opciones se suministran como argumentos y se pueden escribir en
3484     cualquier orden.  Deben tomar la forma 'opci�n=valor'.  Las
3485     opciones son:
3486
3487     'epsrel'
3488          Error relativo de aproximaci�n deseado.  Valor por defecto es
3489          1d-8.
3490     'epsabs'
3491          Error absoluto de aproximaci�n deseado.  Valor por defecto es
3492          0.
3493     'limit'
3494          Tama�o del array interno de trabajo.  <limit> es el m�ximo
3495          n�mero de subintervalos a utilizar.  Valor por defecto es 200.
3496
3497     'quad_qagp' devuelve una lista con cuatro elementos:
3498
3499        * una aproximaci�n a la integral,
3500        * el error absoluto estimado de la aproximaci�n,
3501        * el n�mero de evaluaciones del integrando,
3502        * un c�digo de error.
3503
3504     El c�digo de error (cuarto elemento de la lista devuelta) puede
3505     tener los siguientes valores:
3506
3507     '0'
3508          no se encontraron errores;
3509     '1'
3510          se han hecho demasiados subintervalos;
3511     '2'
3512          se detect� un error de redondeo muy grande;
3513     '3'
3514          se ha observado un comportamiento del integrando
3515          extremadamente malo;
3516     '4'
3517          fallo de convergencia;
3518     '5'
3519          la integral es probablemente divergengente o converge muy
3520          lentamente;
3521     '6'
3522          entrada inv�lida.
3523
3524     Ejemplos:
3525
3526          (%i1) quad_qagp(x^3*log(abs((x^2-1)*(x^2-2))),x,0,3,[1,sqrt(2)]);
3527          (%o1)   [52.74074838347143, 2.6247632689546663e-7, 1029, 0]
3528          (%i2) quad_qags(x^3*log(abs((x^2-1)*(x^2-2))), x, 0, 3);
3529          (%o2)   [52.74074847951494, 4.088443219529836e-7, 1869, 0]
3530
3531     El integrando tiene singularidades en '1' y 'sqrt(2)', de manera
3532     que suministramos estos puntos a 'quad_qagp'.  Tambi�n se observa
3533     que 'quad_qagp' es m�s exacto y eficiente que 'quad_qags'.
3534
3535 -- Fuci�n: quad_control (<parameter>, [<value>])
3536
3537     Controla la gesti�n de los errores de 'QUADPACK'.  El par�metro
3538     debe ser uno de los siguientes s�mbolos:
3539
3540     'current_error'
3541          El n�mero de error actual.
3542     'control'
3543          Controla si los mensajes se imprimen o no.  Si el valor es
3544          cero o menor, los mensajes se suprimen.
3545     'max_message'
3546          El m�ximo n�mero de veces que se imprime cualquier mensaje.
3547
3548     Si no se da <value>, entonces se devuelve el valor actual asociado
3549     a <parameter>.  En cambio, si se da <value>, se hace la asignaci�n
3550     correspondiente a <parameter>, adquiriendo este nuevo valor.
3551
3552
3553File: maxima.info,  Node: Ecuaciones,  Next: Ecuaciones Diferenciales,  Prev: Integraci�n,  Up: Top
3554
355520 Ecuaciones
3556*************
3557
3558* Menu:
3559
3560* Funciones y variable para las ecuaciones::
3561
3562
3563File: maxima.info,  Node: Funciones y variable para las ecuaciones,  Prev: Ecuaciones,  Up: Ecuaciones
3564
356520.1 Funciones y variable para las ecuaciones
3566=============================================
3567
3568 -- Variable del sistema: %rnum_list
3569     Valor por defecto: '[]'
3570
3571     La variable '%rnum_list' es la lista de variables introducidas en
3572     las soluciones por la funciones 'solve' y 'algsys'.  Las variables
3573     '%r' se a�aden a '%rnum_list' en su orden de creaci�n.  Esto es
3574     �til para hacer sustituciones en la soluci�n a posteriori.
3575
3576          (%i1) solve ([x + y = 3], [x,y]);
3577          (%o1)              [[x = 3 - %r1, y = %r1]]
3578          (%i2) %rnum_list;
3579          (%o2)                       [%r1]
3580          (%i3) sol : solve ([x + 2*y + 3*z = 4], [x,y,z]);
3581          (%o3)   [[x = - 2 %r3 - 3 %r2 + 4, y = %r3, z = %r2]]
3582          (%i4) %rnum_list;
3583          (%o4)                     [%r2, %r3]
3584          (%i5) for i : 1 thru length (%rnum_list) do
3585                  sol : subst (t[i], %rnum_list[i], sol)$
3586          (%i6) sol;
3587          (%o6)     [[x = - 2 t  - 3 t  + 4, y = t , z = t ]]
3588                               2      1           2       1
3589
3590 -- Variable opcional: algepsilon
3591     Valor por defecto: 10^8
3592
3593     La variable 'algepsilon' es utilizada por 'algsys'.
3594
3595 -- Variable opcional: algexact
3596     Valor por defecto: 'false'
3597
3598     El contenido de la variable 'algexact' afecta al comportamiento de
3599     'algsys' de la siguiente forma:
3600
3601     Si 'algexact' vale 'true', 'algsys' llamar� siempre a 'solve' y
3602     luego utilizar� 'realroots'.
3603
3604     Si 'algexact' vale 'false', 'solve' ser� llamada s�lo si la
3605     ecuaci�n no es univariante, o si es cuadr�tica o bicuadr�tica.
3606
3607     Sin embargo, 'algexact: true' no garantiza que �nicamente se
3608     obtengan soluciones exactas, ya que aunque 'algsys' intente siempre
3609     dar soluciones exactas, dar� resultados aproximados si no encuentra
3610     una soluci�n mejor.
3611
3612 -- Funci�n: algsys ([<expr_1>, ..., <expr_m>], [<x_1>, ..., <x_n>])
3613 -- Funci�n: algsys ([<eqn_1>, ..., <eqn_m>], [<x_1>, ..., <x_n>])
3614
3615     Resuelve el sistema de ecuaciones polin�micas <expr_1>, ...,
3616     <expr_m> o las ecuaciones <eqn_1>, ..., <eqn_m> para las variables
3617     <x_1>, ..., <x_n>.  La expresi�n <expr> equivale a la ecuaci�n
3618     '<expr> = 0'.  Puede haber m�s ecuaciones que variables o
3619     viceversa.
3620
3621     La funci�n 'algsys' devuelve una lista de soluciones, cada una de
3622     las cuales consistente a su vez en una lista de ecuaciones
3623     asociando valores a las variables <x_1>, ..., <x_n> que satisfacen
3624     el sistema de ecuaciones.  Si 'algsys' no puede encontrar
3625     soluciones devuelve la lista vac�a '[]'.
3626
3627     Si es necesario se introducen en la soluci�n los s�mbolos '%r1',
3628     '%r2', ..., para representar par�metros arbitrarios; estas
3629     variables tambi�n se a�aden a la lista '%rnum_list'.
3630
3631     El proceso que se sigue es el siguiente:
3632
3633     (1) Primero se factorizan las ecuaciones y se reparten en
3634     subsistemas.
3635
3636     (2) Para cada subsistema <S_i>, se seleccionan una ecuaci�n <E> y
3637     una variable <x>.  Se elige la variable que tenga grado menor.
3638     Entonces se calcula el resultado de <E> y <E_j> respecto de <x>,
3639     siendo las <E_j> el resto de ecuaciones del subsistema <S_i>.  De
3640     aqu� se obtiene otro subsistema <S_i'> con una inc�gnita menos, ya
3641     que <x> ha sido eliminada.  El proceso ahora vuelve al paso (1).
3642
3643     (3) En ocasiones se obtiene un subsistema consistente en una �nica
3644     ecuaci�n.  Si la ecuaci�n es multivariante y no se han introducido
3645     aproximaciones en formato decimal de coma flotante, entonces se
3646     llama a 'solve' para tratar de encontrar una soluci�n exacta.
3647
3648     En algunos casos, 'solve' no puede encontrar la soluci�n, o si lo
3649     consigue puede que el resultado tenga una expresi�n muy grande.
3650
3651     Si la ecuaci�n tiene una s�la inc�gnita y es lineal, o cuadr�tica o
3652     bicuadr�tica, entonces se llama a la funci�n 'solve' si no se han
3653     introducido aproximaciones en formato decimal.  Si se han
3654     introducido aproximaciones, o si hay m�s de una inc�gnita, o si no
3655     es lineal, ni cuadr�tica ni bicuadr�tica, y si la variables
3656     'realonly' vale 'true', entonces se llama a la funci�n 'realroots'
3657     para calcular las soluciones reales.  Si 'realonly' vale 'false',
3658     entonces se llama a 'allroots' para obtener las soluciones reales y
3659     complejas.
3660
3661     Si 'algsys' devuelve una soluci�n que tiene menos d�gitos
3662     significativos de los requeridos, el usuario puede cambiar a
3663     voluntad el valor de 'algepsilon' para obtener mayor precisi�n.
3664
3665     Si 'algexact' vale 'true', se llamar� siempre a 'solve'.
3666
3667     Cuando 'algsys' encuentra una ecuaci�n con m�ltiples inc�gnitas y
3668     que contiene aproximaciones en coma flotante (normalmente debido a
3669     la imposibilidad de encontrar soluciones exactas en pasos
3670     anteriores), entonces no intenta aplicar los m�todos exactos a
3671     estas ecuaciones y presenta el mensaje: "'algsys' cannot solve -
3672     system too complicated."
3673
3674     Las interacciones con 'radcan' pueden dar lugar a expresiones
3675     grandes o complicadas.  En tal caso, puede ser posible aislar
3676     partes del resultado con 'pickapart' o 'reveal'.
3677
3678     Ocasionalmente, 'radcan' puede introducir la unidad imaginaria '%i'
3679     en una soluci�n que de hecho es real.
3680
3681     Ejemplos:
3682
3683          (%i1) e1: 2*x*(1 - a1) - 2*(x - 1)*a2;
3684          (%o1)              2 (1 - a1) x - 2 a2 (x - 1)
3685          (%i2) e2: a2 - a1;
3686          (%o2)                        a2 - a1
3687          (%i3) e3: a1*(-y - x^2 + 1);
3688                                             2
3689          (%o3)                   a1 (- y - x  + 1)
3690          (%i4) e4: a2*(y - (x - 1)^2);
3691                                                 2
3692          (%o4)                   a2 (y - (x - 1) )
3693          (%i5) algsys ([e1, e2, e3, e4], [x, y, a1, a2]);
3694          (%o5) [[x = 0, y = %r1, a1 = 0, a2 = 0],
3695
3696                                            [x = 1, y = 0, a1 = 1, a2 = 1]]
3697          (%i6) e1: x^2 - y^2;
3698                                        2    2
3699          (%o6)                        x  - y
3700          (%i7) e2: -1 - y + 2*y^2 - x + x^2;
3701                                   2        2
3702          (%o7)                 2 y  - y + x  - x - 1
3703          (%i8) algsys ([e1, e2], [x, y]);
3704                           1            1
3705          (%o8) [[x = - -------, y = -------],
3706                        sqrt(3)      sqrt(3)
3707
3708                  1              1             1        1
3709          [x = -------, y = - -------], [x = - -, y = - -], [x = 1, y = 1]]
3710               sqrt(3)        sqrt(3)          3        3
3711
3712 -- Funci�n: allroots (<expr>)
3713 -- Funci�n: allroots (<eqn>)
3714
3715     Calcula aproximaciones num�ricas de las ra�ces reales y complejas
3716     del polinomio <expr> o ecuaci�n polin�mica <eqn> de una variable.
3717
3718     Si la variable 'polyfactor' vale 'true' hace que la funci�n
3719     'allroots' factorice el polinomio para n�meros reales si el
3720     polinomio es real, o para n�meros complejos si el polinomio es
3721     complejo.
3722
3723     La funci�n 'allroots' puede dar resultados inexactos en caso de que
3724     haya ra�ces m�ltiples.  Si el polinomio es real, 'allroots
3725     (%i*<p>)') puede alcanzar mejores aproximaciones que 'allroots
3726     (<p>)', ya que 'allroots' ejecuta entonces un algoritmo diferente.
3727
3728     La funci�n 'allroots' no opera sobre expresiones no polin�micas,
3729     pues requiere que el numerador sea reducible a un polinomio y el
3730     denominador sea, como mucho, un n�mero complejo.
3731
3732     Para polinomios complejos se utiliza el algoritmo de Jenkins y
3733     Traub descrito en (Algorithm 419, Comm.  ACM, vol.  15, (1972), p.
3734     97).  Para polinomios reales se utiliza el algoritmo de Jenkins
3735     descrito en (Algorithm 493, ACM TOMS, vol.  1, (1975), p.178).
3736
3737     Ejemplos:
3738
3739          (%i1) eqn: (1 + 2*x)^3 = 13.5*(1 + x^5);
3740                                      3          5
3741          (%o1)              (2 x + 1)  = 13.5 (x  + 1)
3742          (%i2) soln: allroots (eqn);
3743          (%o2) [x = .8296749902129361, x = - 1.015755543828121,
3744
3745          x = .9659625152196369 %i - .4069597231924075,
3746
3747          x = - .9659625152196369 %i - .4069597231924075, x = 1.0]
3748          (%i3) for e in soln
3749                  do (e2: subst (e, eqn), disp (expand (lhs(e2) - rhs(e2))));
3750                                - 3.5527136788005E-15
3751
3752                               - 5.32907051820075E-15
3753
3754                   4.44089209850063E-15 %i - 4.88498130835069E-15
3755
3756                  - 4.44089209850063E-15 %i - 4.88498130835069E-15
3757
3758                                 3.5527136788005E-15
3759
3760          (%o3)                         done
3761          (%i4) polyfactor: true$
3762          (%i5) allroots (eqn);
3763          (%o5) - 13.5 (x - 1.0) (x - .8296749902129361)
3764
3765                                     2
3766           (x + 1.015755543828121) (x  + .8139194463848151 x
3767
3768           + 1.098699797110288)
3769
3770 -- Funci�n: bfallroots (<expr>)
3771 -- Funci�n: bfallroots (<eqn>)
3772     Calcula aproximaciones num�ricas de las ra�ces reales y complejas
3773     del polinomio <expr> o de la ecuaci�n polin�mica <eqn> de una
3774     variable.
3775
3776     En todos los aspectos, 'bfallroots' es id�ntica a 'allroots',
3777     excepto que 'bfallroots' calcula las ra�ces en formato bigfloat
3778     (n�meros decimales de precisi�n arbitraria).
3779
3780     V�ase 'allroots' para m�s informaci�n.
3781
3782 -- Variable opcional: backsubst
3783     Valor por defecto: 'true'
3784
3785     Si 'backsubst' vale 'false', evita la retrosustituci�n en
3786     'linsolve' tras la triangularizaci�n de las ecuaciones.  Esto puede
3787     ser de utilidad en problemas muy grandes, en los que la
3788     retrosustituci�n puede provocar la generaci�n de expresiones
3789     extremadamente largas.
3790
3791          (%i1) eq1 : x + y + z = 6$
3792          (%i2) eq2 : x - y + z = 2$
3793          (%i3) eq3 : x + y - z = 0$
3794          (%i4) backsubst : false$
3795          (%i5) linsolve ([eq1, eq2, eq3], [x,y,z]);
3796          (%o5)             [x = z - y, y = 2, z = 3]
3797          (%i6) backsubst : true$
3798          (%i7) linsolve ([eq1, eq2, eq3], [x,y,z]);
3799          (%o7)               [x = 1, y = 2, z = 3]
3800
3801 -- Variable opcional: breakup
3802     Valor por defecto: 'true'
3803
3804     Si 'breakup' vale 'true', 'solve' expresa sus soluciones a las
3805     ecuaciones c�bicas y cu�rticas en t�rminos de subexpresiones
3806     comunes, las cuales son asignadas a etiquetas del tipo '%t1',
3807     '%t2', etc.  En otro caso, no se identifican subexpresiones
3808     comunes.
3809
3810     La asignaci�n 'breakup: true' s�lo tiene efecto cuando
3811     'programmode' vale 'false'.
3812
3813     Ejemplos:
3814
3815          (%i1) programmode: false$
3816          (%i2) breakup: true$
3817          (%i3) solve (x^3 + x^2 - 1);
3818
3819                                  sqrt(23)    25 1/3
3820          (%t3)                  (--------- + --)
3821                                  6 sqrt(3)   54
3822          Solution:
3823
3824                                                sqrt(3) %i   1
3825                                                ---------- - -
3826                          sqrt(3) %i   1            2        2   1
3827          (%t4)    x = (- ---------- - -) %t3 + -------------- - -
3828                              2        2            9 %t3        3
3829
3830                                                sqrt(3) %i   1
3831                                              - ---------- - -
3832                        sqrt(3) %i   1              2        2   1
3833          (%t5)    x = (---------- - -) %t3 + ---------------- - -
3834                            2        2             9 %t3         3
3835
3836                                             1     1
3837          (%t6)                  x = %t3 + ----- - -
3838                                           9 %t3   3
3839          (%o6)                    [%t4, %t5, %t6]
3840          (%i6) breakup: false$
3841          (%i7) solve (x^3 + x^2 - 1);
3842          Solution:
3843
3844                       sqrt(3) %i   1
3845                       ---------- - -
3846                           2        2        sqrt(23)    25 1/3
3847          (%t7) x = --------------------- + (--------- + --)
3848                       sqrt(23)    25 1/3    6 sqrt(3)   54
3849                    9 (--------- + --)
3850                       6 sqrt(3)   54
3851
3852                                                        sqrt(3) %i   1    1
3853                                                     (- ---------- - -) - -
3854                                                            2        2    3
3855
3856                     sqrt(23)    25 1/3  sqrt(3) %i   1
3857          (%t8) x = (--------- + --)    (---------- - -)
3858                     6 sqrt(3)   54          2        2
3859
3860                                                      sqrt(3) %i   1
3861                                                    - ---------- - -
3862                                                          2        2      1
3863                                                + --------------------- - -
3864                                                     sqrt(23)    25 1/3   3
3865                                                  9 (--------- + --)
3866                                                     6 sqrt(3)   54
3867
3868                      sqrt(23)    25 1/3             1             1
3869          (%t9)  x = (--------- + --)    + --------------------- - -
3870                      6 sqrt(3)   54          sqrt(23)    25 1/3   3
3871                                           9 (--------- + --)
3872                                              6 sqrt(3)   54
3873          (%o9)                    [%t7, %t8, %t9]
3874
3875 -- Funci�n: dimension (<eqn>)
3876 -- Funci�n: dimension (<eqn_1>, ..., <eqn_n>)
3877
3878     El paquete 'dimen' es para an�lisis dimensional.  La instrucci�n
3879     'load ("dimen")' carga el paquete y 'demo ("dimen")' presenta una
3880     peque�a demostraci�n.
3881
3882 -- Variable opcional: dispflag
3883     Valor por defecto: 'true'
3884
3885     Si 'dispflag' vale 'false', entonces se inhibir� que Maxima muestre
3886     resultados de las funciones que resuelven ecuaciones cuando �stas
3887     son llamadas desde dentro de un bloque ('block').  Cuando un bloque
3888     termina con el signo del d�lar, $, a la variable 'dispflag' se le
3889     asigna 'false'.
3890
3891 -- Funci�n: funcsolve (<eqn>, <g>(<t>))
3892
3893     Devuelve '[<g>(<t>) = ...]' o '[]', dependiendo de que exista o no
3894     una funci�n racional '<g>(<t>)' que satisfaga <eqn>, la cual debe
3895     ser un polinomio de primer orden, lineal para '<g>(<t>)' y
3896     '<g>(<t>+1)'
3897
3898          (%i1) eqn: (n + 1)*f(n) - (n + 3)*f(n + 1)/(n + 1)
3899                           = (n - 1)/(n + 2);
3900                                      (n + 3) f(n + 1)   n - 1
3901          (%o1)        (n + 1) f(n) - ---------------- = -----
3902                                           n + 1         n + 2
3903          (%i2) funcsolve (eqn, f(n));
3904
3905          Dependent equations eliminated:  (4 3)
3906                                             n
3907          (%o2)                f(n) = ---------------
3908                                      (n + 1) (n + 2)
3909
3910     Aviso: esta es una implemetaci�n rudimentaria, por lo que debe ser
3911     utilizada con cautela.
3912
3913 -- Variable opcional: globalsolve
3914     Valor por defecto: 'false'
3915
3916     Si 'globalsolve' vale 'true', a las inc�gnitas de las ecuaciones se
3917     les asignan las soluciones encontradas por 'linsolve' y por 'solve'
3918     cuando se resuelven sistemas de dos o m�s ecuaciones lineales.
3919
3920     Si 'globalsolve' vale 'false', las soluciones encontradas por
3921     'linsolve' y por 'solve' cuando se resuelven sistemas de dos o m�s
3922     ecuaciones lineales se expresan como ecuaciones y a las inc�gnitas
3923     no se le asignan valores.
3924
3925     Cuando se resuelven ecuaciones que no son sistemas de dos o m�s
3926     ecuaciones lineales, 'solve' ignora el valor de 'globalsolve'.
3927     Otras funciones que resuelven ecuaciones (como 'algsys') ignoran
3928     siempre el valor de 'globalsolve'.
3929
3930     Ejemplos:
3931
3932          (%i1) globalsolve: true$
3933          (%i2) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]);
3934          Solution
3935
3936                                           17
3937          (%t2)                        x : --
3938                                           7
3939
3940                                             1
3941          (%t3)                        y : - -
3942                                             7
3943          (%o3)                     [[%t2, %t3]]
3944          (%i3) x;
3945                                         17
3946          (%o3)                          --
3947                                         7
3948          (%i4) y;
3949                                           1
3950          (%o4)                          - -
3951                                           7
3952          (%i5) globalsolve: false$
3953          (%i6) kill (x, y)$
3954          (%i7) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]);
3955          Solution
3956
3957                                           17
3958          (%t7)                        x = --
3959                                           7
3960
3961                                             1
3962          (%t8)                        y = - -
3963                                             7
3964          (%o8)                     [[%t7, %t8]]
3965          (%i8) x;
3966          (%o8)                           x
3967          (%i9) y;
3968          (%o9)                           y
3969
3970 -- Funci�n: ieqn (<ie>, <unk>, <tech>, <n>, <guess>)
3971     El paquete 'inteqn' se dedica a la resoluci�n de ecuaciones
3972     integrales.  Para hacer uso de �l, ejecutar la instrucci�n 'load
3973     ("inteqn")'.
3974
3975     El argumento <ie> es la ecuaci�n integral; <unk> es la funci�n
3976     inc�gnita; <tech> es el m�todo a aplicar para efectuar la
3977     resoluci�n del problema (<tech> = 'first' significa: aplica el
3978     primer m�todo que encuentre una soluci�n; <tech> = 'all' significa:
3979     aplica todos los m�todos posibles); <n> es el n�mero m�ximo de
3980     t�rminos que debe tomar 'taylor', 'neumann', 'firstkindseries' o
3981     'fredseries' (tambi�n es el m�ximo nivel de recursi�n para el
3982     m�todo de diferenciaci�n); <guess> es la soluci�n candidata inicial
3983     para 'neumann' o 'firstkindseries'.
3984
3985     Valores por defecto para los argumentos segundo a quinto son:
3986
3987     <unk>: '<p>(<x>)', donde <p> es la primera funci�n desconocida que
3988     Maxima encuentra en el integrando y <x> es la variable que act�a
3989     como argumento en la primera aparici�n de <p> encontrada fuera de
3990     una integral en el caso de ecuaciones de segunda especie
3991     ('secondkind'), o es la �nica variable aparte de la de integraci�n
3992     en el caso de ecuaciones de primera especie ('firstkind').  Si el
3993     intento de encontrar <x> falla, el usuario ser� consultado para
3994     suministrar una variable independiente.
3995
3996 -- Variable opcional: ieqnprint
3997     Valor por defecto: 'true'
3998
3999     La variable 'ieqnprint' controla el comportamiento del resultado
4000     retornado por la instrucci�n 'ieqn'.  Si 'ieqnprint' vale 'false',
4001     la lista devuelta por la funci�n 'ieqn' tiene el formato
4002
4003     [<soluci�n>, <m�todo utilizado>, <nterms>, <variable>]
4004
4005     donde <variable> estar� ausente si la soluci�n es exacta; en otro
4006     caso, ser� la palabra 'approximate' o 'incomplete' seg�n que la
4007     soluci�n sea inexacta o que no tenga forma expl�cita,
4008     respectivamente.  Si se ha utilizado un m�todo basado en series,
4009     <nterms> es el n�mero de t�rminos utilizado, que puede ser menor
4010     que el 'n' dado a 'ieqn'.
4011
4012 -- Funci�n: lhs (<expr>)
4013     Devuelve el miembro izquierdo (es decir, el primer argumento) de la
4014     expresi�n <expr>, cuando el operador de <expr> es uno de los
4015     operadores de relaci�n '< <= = # equal notequal >= >', o un
4016     operadores de asignaci�n ':= ::= : ::', o un operador infijo
4017     binario definido por el usuario mediante 'infix'.
4018
4019     Si <expr> es un �tomo o si su operador es diferente de los citados
4020     m�s arriba, 'lhs' devuelve <expr>.
4021
4022     V�ase tambi�n 'rhs'.
4023
4024     Ejemplo:
4025
4026          (%i1) e: aa + bb = cc;
4027          (%o1)                     bb + aa = cc
4028          (%i2) lhs (e);
4029          (%o2)                        bb + aa
4030          (%i3) rhs (e);
4031          (%o3)                          cc
4032          (%i4) [lhs (aa < bb), lhs (aa <= bb),
4033                 lhs (aa >= bb), lhs (aa > bb)];
4034          (%o4)                   [aa, aa, aa, aa]
4035          (%i5) [lhs (aa = bb), lhs (aa # bb), lhs (equal (aa, bb)),
4036                 lhs (notequal (aa, bb))];
4037          (%o5)                   [aa, aa, aa, aa]
4038          (%i6) e1: '(foo(x) := 2*x);
4039          (%o6)                     foo(x) := 2 x
4040          (%i7) e2: '(bar(y) ::= 3*y);
4041          (%o7)                    bar(y) ::= 3 y
4042          (%i8) e3: '(x : y);
4043          (%o8)                         x : y
4044          (%i9) e4: '(x :: y);
4045          (%o9)                        x :: y
4046          (%i10) [lhs (e1), lhs (e2), lhs (e3), lhs (e4)];
4047          (%o10)               [foo(x), bar(y), x, x]
4048          (%i11) infix ("][");
4049          (%o11)                         ][
4050          (%i12) lhs (aa ][ bb);
4051          (%o12)                         aa
4052
4053 -- Funci�n: linsolve ([<expr_1>, ..., <expr_m>], [<x_1>, ..., <x_n>])
4054     Resuelve la lista de ecuaciones lineales simult�neas para la lista
4055     de variables.  Las expresiones deben ser polinomios lineales
4056     respecto de las variables o ecuaciones.
4057
4058     Si 'globalsolve' vale 'true', a cada inc�gnita se le asigna el
4059     valor de la soluci�n encontrada.
4060
4061     Si 'backsubst' vale 'false', 'linsolve' no hace la sustituci�n tras
4062     la triangulariaci�n de las ecuaciones.  Esto puede ser necesario en
4063     problemas muy grandes en los que la sustituci�n puede dar lugar a
4064     la generaci�n de expresiones enormes.
4065
4066     Si 'linsolve_params' vale 'true', 'linsolve' tambi�n genera
4067     s�mbolos '%r' para representar par�metros arbitrarios como los
4068     descritos para la funci�n 'algsys'.  Si vale 'false', el resultado
4069     devuelto por 'linsolve' expresar�, si es el sistema es
4070     indeterminado, unas variables en funci�n de otras.
4071
4072     Si 'programmode' vale 'false', 'linsolve' muestra la soluci�n con
4073     etiquetas de expresiones intermedias ('%t') y devuelve las lista de
4074     etiquetas.
4075
4076          (%i1) e1: x + z = y;
4077          (%o1)                       z + x = y
4078          (%i2) e2: 2*a*x - y = 2*a^2;
4079                                                 2
4080          (%o2)                   2 a x - y = 2 a
4081          (%i3) e3: y - 2*z = 2;
4082          (%o3)                      y - 2 z = 2
4083          (%i4) [globalsolve: false, programmode: true];
4084          (%o4)                     [false, true]
4085          (%i5) linsolve ([e1, e2, e3], [x, y, z]);
4086          (%o5)            [x = a + 1, y = 2 a, z = a - 1]
4087          (%i6) [globalsolve: false, programmode: false];
4088          (%o6)                    [false, false]
4089          (%i7) linsolve ([e1, e2, e3], [x, y, z]);
4090          Solution
4091
4092          (%t7)                       z = a - 1
4093
4094          (%t8)                        y = 2 a
4095
4096          (%t9)                       x = a + 1
4097          (%o9)                    [%t7, %t8, %t9]
4098          (%i9) ''%;
4099          (%o9)            [z = a - 1, y = 2 a, x = a + 1]
4100          (%i10) [globalsolve: true, programmode: false];
4101          (%o10)                    [true, false]
4102          (%i11) linsolve ([e1, e2, e3], [x, y, z]);
4103          Solution
4104
4105          (%t11)                      z : a - 1
4106
4107          (%t12)                       y : 2 a
4108
4109          (%t13)                      x : a + 1
4110          (%o13)                 [%t11, %t12, %t13]
4111          (%i13) ''%;
4112          (%o13)           [z : a - 1, y : 2 a, x : a + 1]
4113          (%i14) [x, y, z];
4114          (%o14)                 [a + 1, 2 a, a - 1]
4115          (%i15) [globalsolve: true, programmode: true];
4116          (%o15)                    [true, true]
4117          (%i16) linsolve ([e1, e2, e3], '[x, y, z]);
4118          (%o16)           [x : a + 1, y : 2 a, z : a - 1]
4119          (%i17) [x, y, z];
4120          (%o17)                 [a + 1, 2 a, a - 1]
4121
4122 -- Variable opcional: linsolvewarn
4123     Valor por defecto: 'true'
4124
4125     Si 'linsolvewarn' vale 'true', 'linsolve' mostrar� el mensaje:
4126     "Dependent equations eliminated".
4127
4128 -- Variable opcional: linsolve_params
4129     Valor por defecto: 'true'
4130
4131     Si 'linsolve_params' vale 'true', 'linsolve' tambi�n genera
4132     s�mbolos '%r' para representar par�metros arbitrarios como los
4133     descritos para la funci�n 'algsys'.  Si vale 'false', el resultado
4134     devuelto por 'linsolve' expresar�, si es el sistema es
4135     indeterminado, unas variables en funci�n de otras.
4136
4137 -- System variable: multiplicities
4138     Valor por defecto: 'not_set_yet'
4139
4140     La variable 'multiplicities' es una con las multiplicidades de las
4141     soluciones encontradas por 'solve' o 'realroots'.
4142
4143 -- Funci�n: nroots (<p>, <low>, <high>)
4144     Devuelve el n�mero de ra�ces reales del polinomio real univariante
4145     <p> en el intervalo semiabierto '(<low>, <high>]'.  Los extremos
4146     del intervalo pueden ser 'minf' o 'inf', menos y m�s infinito.
4147
4148     La funci�n 'nroots' utiliza el m�todo de las secuencias de Sturm.
4149
4150          (%i1) p: x^10 - 2*x^4 + 1/2$
4151          (%i2) nroots (p, -6, 9.1);
4152          (%o2)                           4
4153
4154 -- Funci�n: nthroot (<p>, <n>)
4155
4156     Siendo 'p' un polinomio de coeficientes enteros y 'n' un entero
4157     positivo, 'nthroot' devuelve un polinomio 'q', tambi�n de
4158     coeficientes enteros, tal que 'q^n=p', o un mensaje de error
4159     indicando que 'p' no es una 'n'-potencia exacta.  Esta funci�n es
4160     bastante m�s r�pida que 'factor' y que 'sqfr'.
4161
4162 -- Variable opcional: polyfactor
4163     Valor por defecto: 'false'
4164
4165     Cuando 'polyfactor' vale 'true', las funciones 'allroots' y
4166     'bfallroots' factorizan el polinomio sobre los n�meros reales si el
4167     polinomio es real, o factoriza sobre los complejos si el polinomio
4168     es complejo.
4169
4170     V�ase un ejemplo en 'allroots'.
4171
4172 -- Variable opcional: programmode
4173     Valor por defecto: 'true'
4174
4175     Si 'programmode' vale 'true', 'solve', 'realroots', 'allroots' y
4176     'linsolve' devuelve sus soluciones como elementos de una lista.
4177
4178     Si 'programmode' vale 'false', 'solve' y las dem�s crean
4179     expresiones intermedias etiquetadas '%t1', 't2', etc., y les asinan
4180     las soluciones.
4181
4182          (%i1) solve(x^2+x+1);
4183                              sqrt(3) %i + 1      sqrt(3) %i - 1
4184          (%o1)        [x = - --------------, x = --------------]
4185                                    2                   2
4186          (%i2) programmode:false$
4187          (%i3) solve(x^2+x+1);
4188          Solution:
4189
4190                                        sqrt(3) %i + 1
4191          (%t3)                   x = - --------------
4192                                              2
4193
4194                                       sqrt(3) %i - 1
4195          (%t4)                    x = --------------
4196                                             2
4197          (%o4)                        [%t4, %t5]
4198
4199 -- Variable opcional: realonly
4200     Valor por defecto: 'false'
4201
4202     Si 'realonly' vale 'true', 'algsys' s�lo devuelve aquellas
4203     soluciones exentas de la constante '%i'.
4204
4205 -- Funci�n: realroots (<expr>, <bound>)
4206 -- Funci�n: realroots (<eqn>, <bound>)
4207 -- Funci�n: realroots (<expr>)
4208 -- Funci�n: realroots (<eqn>)
4209     Calcula aproximaciones racionales de las ra�ces reales del
4210     polinomio <expr> o de la ecuaci�n polin�mica <eqn> de una variable,
4211     dentro de la tolerancia especificada por <bound>.  Los coeficientes
4212     de <expr> o de <eqn> deben ser n�meros literales, por lo que las
4213     constantes simb�licas como '%pi' no son aceptadas.
4214
4215     La funci�n 'realroots' guarda las multiplicidades de las ra�ces
4216     encontradas en la variable global 'multiplicities'.
4217
4218     La funci�n 'realroots' genera una secuencia de Sturm para acotar
4219     cada ra�z, aplicando despu�s el m�todo de bisecci�n para afinar las
4220     aproximaciones.  Todos los coeficientes se convierten a formas
4221     racionales equivalentes antes de comenzar la b�squeda de las
4222     ra�ces, de modo que los c�lculos se realizan con aritm�tica exacta
4223     racional.  Incluso en el caso de que algunos coeficientes sean
4224     n�meros decimales en coma flotante, los resultados son racionales,
4225     a menos que se les fuerce a ser decimales con las variables 'float'
4226     o 'numer'.
4227
4228     Si <bound> es menor que la unidad, todas las ra�ces enteras se
4229     expresan en forma exacta.  Si no se especifica <bound>, se le
4230     supone igual al valor de la variable global 'rootsepsilon'.
4231
4232     Si la variable global 'programmode' vale 'true', la funci�n
4233     'realroots' devuelve una lista de la forma '[x = <x_1>, x = <x_2>,
4234     ...]'.  Si 'programmode' vale 'false', 'realroots' crea etiquetas
4235     '%t1', '%t2', ...  para las expresiones intermedias, les asigna
4236     valores y, finalmente, devuelve la lista de etiquetas.
4237
4238     Ejemplos:
4239
4240          (%i1) realroots (-1 - x + x^5, 5e-6);
4241                                         612003
4242          (%o1)                     [x = ------]
4243                                         524288
4244          (%i2) ev (%[1], float);
4245          (%o2)                 x = 1.167303085327148
4246          (%i3) ev (-1 - x + x^5, %);
4247          (%o3)                - 7.396496210176905E-6
4248
4249          (%i1) realroots (expand ((1 - x)^5 * (2 - x)^3 * (3 - x)), 1e-20);
4250          (%o1)                 [x = 1, x = 2, x = 3]
4251          (%i2) multiplicities;
4252          (%o2)                       [5, 3, 1]
4253
4254 -- Funci�n: rhs (<expr>)
4255     Devuelve el miembro derecho (es decir, el segundo argumento) de la
4256     expresi�n <expr>, cuando el operador de <expr> es uno de los
4257     operadores de relaci�n '< <= = # equal notequal >= >', o un
4258     operadores de asignaci�n ':= ::= : ::', o un operador infijo
4259     binario definido por el usuario mediante 'infix'.
4260
4261     Si <expr> es un �tomo o si su operador es diferente de los citados
4262     m�s arriba, 'rhs' devuelve <expr>.
4263
4264     V�ase tambi�n 'lhs'.
4265
4266     Ejemplo:
4267
4268          (%i1) e: aa + bb = cc;
4269          (%o1)                     bb + aa = cc
4270          (%i2) lhs (e);
4271          (%o2)                        bb + aa
4272          (%i3) rhs (e);
4273          (%o3)                          cc
4274          (%i4) [rhs (aa < bb), rhs (aa <= bb),
4275                 rhs (aa >= bb), rhs (aa > bb)];
4276          (%o4)                   [bb, bb, bb, bb]
4277          (%i5) [rhs (aa = bb), rhs (aa # bb), rhs (equal (aa, bb)),
4278                 rhs (notequal (aa, bb))];
4279          (%o5)                   [bb, bb, bb, bb]
4280          (%i6) e1: '(foo(x) := 2*x);
4281          (%o6)                     foo(x) := 2 x
4282          (%i7) e2: '(bar(y) ::= 3*y);
4283          (%o7)                    bar(y) ::= 3 y
4284          (%i8) e3: '(x : y);
4285          (%o8)                         x : y
4286          (%i9) e4: '(x :: y);
4287          (%o9)                        x :: y
4288          (%i10) [rhs (e1), rhs (e2), rhs (e3), rhs (e4)];
4289          (%o10)                  [2 x, 3 y, y, y]
4290          (%i11) infix ("][");
4291          (%o11)                         ][
4292          (%i12) rhs (aa ][ bb);
4293          (%o12)                         bb
4294
4295 -- Variable opcional: rootsconmode
4296     Valor por defecto: 'true'
4297
4298     La variable 'rootsconmode' controla el comportamiento de la
4299     instrucci�n 'rootscontract'.  V�ase 'rootscontract' para m�s
4300     detalles.
4301
4302 -- Funci�n: rootscontract (<expr>)
4303     Convierte productos de ra�ces en ra�ces de productos.  Por ejemplo,
4304     'rootscontract (sqrt(x)*y^(3/2))' devuelve 'sqrt(x*y^3)'.
4305
4306     Si 'radexpand' vale 'true' y 'domain' vale 'real', 'rootscontract'
4307     convierte 'abs' en 'sqrt', por ejemplo, 'rootscontract
4308     (abs(x)*sqrt(y))' devuelve 'sqrt(x^2*y)'.
4309
4310     La opci�n 'rootsconmode' afecta el resultado de 'rootscontract'
4311     como sigue:
4312
4313          Problema            Valor de         Resultadod de
4314                            rootsconmode        rootscontract
4315
4316          x^(1/2)*y^(3/2)      false          (x*y^3)^(1/2)
4317          x^(1/2)*y^(1/4)      false          x^(1/2)*y^(1/4)
4318          x^(1/2)*y^(1/4)      true           (x*y^(1/2))^(1/2)
4319          x^(1/2)*y^(1/3)      true           x^(1/2)*y^(1/3)
4320          x^(1/2)*y^(1/4)      all            (x^2*y)^(1/4)
4321          x^(1/2)*y^(1/3)      all            (x^3*y^2)^(1/6)
4322
4323     Si 'rootsconmode' vale 'false', 'rootscontract' contrae s�lamente
4324     respecto de exponentes racionales cuyos denominadores sean iguales.
4325     La clave para los ejemplos 'rootsconmode: true' es simplemente que
4326     2 divide a 4 pero no a 3.  La asignaci�n 'rootsconmode: all' hace
4327     que se calcule el m�nimo com�n m�ltiplo de los denominadores de los
4328     exponentes.
4329
4330     La funci�n 'rootscontract' utiliza 'ratsimp' de forma similar a
4331     como lo hace 'logcontract'.
4332
4333     Ejemplos:
4334
4335          (%i1) rootsconmode: false$
4336          (%i2) rootscontract (x^(1/2)*y^(3/2));
4337                                             3
4338          (%o2)                      sqrt(x y )
4339          (%i3) rootscontract (x^(1/2)*y^(1/4));
4340                                             1/4
4341          (%o3)                     sqrt(x) y
4342          (%i4) rootsconmode: true$
4343          (%i5) rootscontract (x^(1/2)*y^(1/4));
4344          (%o5)                    sqrt(x sqrt(y))
4345          (%i6) rootscontract (x^(1/2)*y^(1/3));
4346                                             1/3
4347          (%o6)                     sqrt(x) y
4348          (%i7) rootsconmode: all$
4349          (%i8) rootscontract (x^(1/2)*y^(1/4));
4350                                        2   1/4
4351          (%o8)                       (x  y)
4352          (%i9) rootscontract (x^(1/2)*y^(1/3));
4353                                       3  2 1/6
4354          (%o9)                      (x  y )
4355          (%i10) rootsconmode: false$
4356          (%i11) rootscontract (sqrt(sqrt(x) + sqrt(1 + x))
4357                              *sqrt(sqrt(1 + x) - sqrt(x)));
4358          (%o11)                          1
4359          (%i12) rootsconmode: true$
4360          (%i13) rootscontract (sqrt(5 + sqrt(5)) - 5^(1/4)*sqrt(1 + sqrt(5)));
4361          (%o13)                          0
4362
4363 -- Variable opcional: rootsepsilon
4364     Valor por defecto: 1.0e-7
4365
4366     La variable 'rootsepsilon' es la tolerancia que establece el
4367     intervalo de confianza para las ra�ces calculadas por la funci�n
4368     'realroots'.
4369
4370 -- Funci�n: solve (<expr>, <x>)
4371 -- Funci�n: solve (<expr>)
4372 -- Funci�n: solve ([<eqn_1>, ..., <eqn_n>], [<x_1>, ..., <x_n>])
4373
4374     Resuelve la ecuaci�n algebraica <expr> de inc�gnita <x> y devuelve
4375     una lista de igualdades con la <x> despejada.  Si <expr> no es una
4376     igualdad, se supone que se quiere resolver la ecuaci�n '<expr> =
4377     0'.  El argumento <x> puede ser una funci�n (por ejemplo, 'f(x)'),
4378     u otra expresi�n no at�mica, excepto una suma o producto.  Puede
4379     omitirse <x> si <expr> contiene solamente una variable.  El
4380     argumento <expr> puede ser una expresi�n racional y puede contener
4381     funciones trigonom�tricas, exponenciales, etc.
4382
4383     Se utiliza el siguiente m�todo de resoluci�n:
4384
4385     Sea <E> la expresi�n y <X> la inc�gnita.  Si <E> es lineal respecto
4386     de <X> entonces <X> se resuelve de forma trivial.  En caso
4387     contrario, si <E> es de la forma 'A*X^N + B' entonces el resultado
4388     es '(-B/A)^1/N)' multiplicado por las 'N'-�simas ra�ces de la
4389     unidad.
4390
4391     Si <E> no es lineal respecto de <X> entonces el m�ximo com�n
4392     divisor de los exponentes de <X> en <E> (sup�ngase que es <N>) se
4393     divide entre los exponentes y la multiplicidad de las ra�ces se
4394     multiplica por <N>.  Entonces es llamado recursivamente 'solve'
4395     para este resultado.  Si <E> es factorizable entonces 'solve' es
4396     invocado para cada uno de los factores.  Finalmente, 'solve' usar�,
4397     seg�n sea necesario, las f�rmulas cuadr�tica, c�bica o cu�rtica.
4398
4399     En caso de que <E> sea un polinomio respecto de una funci�n de la
4400     inc�gnita, por ejemplo 'F(X)', entonces se calcula primero para
4401     'F(X)' (sea <C> el resultado obtenido), entonces la ecuaci�n
4402     'F(X)=C' se resuelve para <X> en el supuesto que se conozca la
4403     inversa de la funci�n <F>.
4404
4405     Si la variable 'breakup' vale 'false' har� que 'solve' muestre las
4406     soluciones de las ecuaciones c�bicas o cu�rticas como expresiones
4407     �nicas, en lugar de utilizar varias subexpresiones comunes, que es
4408     el formato por defecto.
4409
4410     A la variable 'multiplicities' se le asignar� una lista con las
4411     multiplicidades de las soluciones individuales devueltas por
4412     'solve', 'realroots' o 'allroots'.  La instrucci�n 'apropos
4413     (solve)' har� que se muestren las variables optativas que de alg�n
4414     modo afectan al comportamiento de 'solve'.  Se podr� luego utilizar
4415     la funci�n 'describe' para aquellas variables cuyo objeto no est�
4416     claro.
4417
4418     La llamada 'solve ([<eqn_1>, ..., <eqn_n>], [<x_1>, ..., <x_n>])'
4419     resuelve un sistema de ecuaciones polin�micas simult�neas (lineales
4420     o no) llamando a 'linsolve' o 'algsys' y devuelve una lista de
4421     listas con soluciones para las inc�gnitas.  En caso de haberse
4422     llamado a 'linsolve' esta lista contendr� una �nica lista de
4423     soluciones.  La llamada a 'solve' tiene dos listas como argumentos.
4424     La primera lista tiene las ecuaciones a resolver y la segunda son
4425     las inc�gnitas cuyos valores se quieren calcular.  Si el n�mero de
4426     variables en las ecuaciones es igual al n�mero de inc�gnitas, el
4427     segundo argumento puede omitirse.
4428
4429     Si 'programmode' vale 'false', 'solve' muestra la soluci�n con
4430     etiquetas de expresiones intermedias ('%t') y devuelve las lista de
4431     etiquetas.
4432
4433     Si 'globalsolve' vale 'true' y el problema consiste en resolver un
4434     sistema de dos o m�s ecuaciones lineales, a cada inc�gnita se le
4435     asigna el valor encontrado en la resoluci�n del sistema.
4436
4437     Ejemplos:
4438          (%i1) solve (asin (cos (3*x))*(f(x) - 1), x);
4439
4440          SOLVE is using arc-trig functions to get a solution.
4441          Some solutions will be lost.
4442                                      %pi
4443          (%o1)                  [x = ---, f(x) = 1]
4444                                       6
4445          (%i2) ev (solve (5^f(x) = 125, f(x)), solveradcan);
4446                                          log(125)
4447          (%o2)                   [f(x) = --------]
4448                                           log(5)
4449          (%i3) [4*x^2 - y^2 = 12, x*y - x = 2];
4450                                2    2
4451          (%o3)             [4 x  - y  = 12, x y - x = 2]
4452          (%i4) solve (%, [x, y]);
4453          (%o4) [[x = 2, y = 2], [x = .5202594388652008 %i
4454
4455           - .1331240357358706, y = .0767837852378778
4456
4457           - 3.608003221870287 %i], [x = - .5202594388652008 %i
4458
4459           - .1331240357358706, y = 3.608003221870287 %i
4460
4461           + .0767837852378778], [x = - 1.733751846381093,
4462
4463          y = - .1535675710019696]]
4464          (%i5) solve (1 + a*x + x^3, x);
4465                                                 3
4466                        sqrt(3) %i   1   sqrt(4 a  + 27)   1 1/3
4467          (%o5) [x = (- ---------- - -) (--------------- - -)
4468                            2        2      6 sqrt(3)      2
4469
4470                  sqrt(3) %i   1
4471                 (---------- - -) a
4472                      2        2
4473           - --------------------------, x =
4474                        3
4475                sqrt(4 a  + 27)   1 1/3
4476             3 (--------------- - -)
4477                   6 sqrt(3)      2
4478
4479                                    3
4480           sqrt(3) %i   1   sqrt(4 a  + 27)   1 1/3
4481          (---------- - -) (--------------- - -)
4482               2        2      6 sqrt(3)      2
4483
4484                   sqrt(3) %i   1
4485                (- ---------- - -) a
4486                       2        2
4487           - --------------------------, x =
4488                        3
4489                sqrt(4 a  + 27)   1 1/3
4490             3 (--------------- - -)
4491                   6 sqrt(3)      2
4492
4493                   3
4494           sqrt(4 a  + 27)   1 1/3               a
4495          (--------------- - -)    - --------------------------]
4496              6 sqrt(3)      2                  3
4497                                        sqrt(4 a  + 27)   1 1/3
4498                                     3 (--------------- - -)
4499                                           6 sqrt(3)      2
4500          (%i6) solve (x^3 - 1);
4501                       sqrt(3) %i - 1        sqrt(3) %i + 1
4502          (%o6)   [x = --------------, x = - --------------, x = 1]
4503                             2                     2
4504          (%i7) solve (x^6 - 1);
4505                     sqrt(3) %i + 1      sqrt(3) %i - 1
4506          (%o7) [x = --------------, x = --------------, x = - 1,
4507                           2                   2
4508
4509                               sqrt(3) %i + 1        sqrt(3) %i - 1
4510                         x = - --------------, x = - --------------, x = 1]
4511                                     2                     2
4512          (%i8) ev (x^6 - 1, %[1]);
4513                                                6
4514                                (sqrt(3) %i + 1)
4515          (%o8)                 ----------------- - 1
4516                                       64
4517          (%i9) expand (%);
4518          (%o9)                           0
4519          (%i10) x^2 - 1;
4520                                        2
4521          (%o10)                       x  - 1
4522          (%i11) solve (%, x);
4523          (%o11)                  [x = - 1, x = 1]
4524          (%i12) ev (%th(2), %[1]);
4525          (%o12)                          0
4526
4527     Los � '%r' se utilizan para indicar par�metros en las soluciones.
4528
4529          (%i1) solve([x+y=1,2*x+2*y=2],[x,y]);
4530
4531          solve: dependent equations eliminated: (2)
4532          (%o1)                      [[x = 1 - %r1, y = %r1]]
4533
4534     V�anse 'algsys' y '%rnum_list' para m�s informaci�n.
4535
4536 -- Variable opcional: solvedecomposes
4537     Valor por defecto: 'true'
4538
4539     Si 'solvedecomposes' vale 'true', 'solve' llama a 'polydecomp' en
4540     caso de que se le pida resolver ecuaciones polin�micas.
4541
4542 -- Variable opcional: solveexplicit
4543     Valor por defecto: 'false'
4544
4545     Si 'solveexplicit' vale 'true', le inhibe a 'solve' devolver
4546     soluciones impl�citas, esto es, soluciones de la forma 'F(x) = 0',
4547     donde 'F' es cierta funci�n.
4548
4549 -- Variable opcional: solvefactors
4550     Valor por defecto: 'true'
4551
4552     Si 'solvefactors' vale 'false', 'solve' no intenta factorizar la
4553     expresi�n.  Este valor 'false' puede ser �til en algunos casos en
4554     los que la factorizaci�n no es necesaria.
4555
4556 -- Variable opcional: solvenullwarn
4557     Valor por defecto: 'true'
4558
4559     Si 'solvenullwarn' vale 'true', 'solve' muestra un mensaje de aviso
4560     si es llamado con una lista de ecuaciones vac�a o con una lista de
4561     inc�gnitas vac�a.  Por ejemplo, 'solve ([], [])' imprimir� dos
4562     mensajes de aviso y devolver� '[]'.
4563
4564 -- Variable opcional: solveradcan
4565     Valor por defecto: 'false'
4566
4567     Si 'solveradcan' vale 'true', 'solve' llama a 'radcan', lo que har�
4568     que 'solve' se ejecute de forma m�s lenta, pero permitir� que se
4569     resuelvan ciertas ecuaciones que contengan exponenciales y
4570     logaritmos.
4571
4572 -- Variable opcional: solvetrigwarn
4573     Valor por defecto: 'true'
4574
4575     Si 'solvetrigwarn' vale 'true', 'solve' puede presentar un mensaje
4576     diciendo que est� utilizando funciones trigonom�tricas inversas
4577     para resolver la ecuaci�n, y que por lo tanto puede estar ignorando
4578     algunas soluciones.
4579
4580
4581File: maxima.info,  Node: Ecuaciones Diferenciales,  Next: M�todos num�ricos,  Prev: Ecuaciones,  Up: Top
4582
458321 Ecuaciones Diferenciales
4584***************************
4585
4586* Menu:
4587
4588* Introducci�n a las ecuaciones diferenciales::
4589* Funciones y variables para ecuaciones diferenciales::
4590
4591
4592File: maxima.info,  Node: Introducci�n a las ecuaciones diferenciales,  Next: Funciones y variables para ecuaciones diferenciales,  Prev: Ecuaciones Diferenciales,  Up: Ecuaciones Diferenciales
4593
459421.1 Introducci�n a las ecuaciones diferenciales
4595================================================
4596
4597Esta secci�n describe las funciones disponibles en Maxima para el
4598c�lculo de las soluciones anal�ticas de ciertos tipos de ecuaciones de
4599primer y segundo orden.  Para las soluciones num�ricas de sistemas de
4600ecuaciones diferenciales, v�ase el paquete adicional 'dynamics'.  Para
4601las representaciones gr�ficas en el espacio de fases, v�ase el paquete
4602'plotdf'.
4603
4604
4605File: maxima.info,  Node: Funciones y variables para ecuaciones diferenciales,  Prev: Introducci�n a las ecuaciones diferenciales,  Up: Ecuaciones Diferenciales
4606
460721.2 Funciones y variables para ecuaciones diferenciales.
4608=========================================================
4609
4610 -- Funci�n: bc2 (<soluc>, <xval1>, <yval1>, <xval2>, <yval2>)
4611     Resuelve el problema del valor en la frontera para ecuaciones
4612     diferenciales de segundo orden.  Aqu�, <soluc> es una soluci�n
4613     general de la ecuaci�n, como las que calcula 'ode2', <xval1>
4614     especifica el valor de la variable independiente en el primer punto
4615     mediante una expresi�n de la forma '<x> = <x0>', mientras que
4616     <yval1> hace lo propio para la variable dependiente.  Las
4617     expresiones <xval2> y <yval2> dan los valores de estas mismas
4618     variables en un segundo punto, utilizando el mismo formato.
4619
4620 -- Funci�n: desolve (<ecu>, <x>)
4621 -- Funci�n: desolve ([<eqn_1>, ..., <eqn_n>], [<x_1>, ..., <x_n>])
4622
4623     La funci�n 'desolve' resuelve sistemas de ecuaciones diferenciales
4624     ordinarias lineales utilizando la transformada de Laplace.  Aqu�
4625     las <eqi> ('i'=1,..,n) son ecuaciones diferenciales con variables
4626     dependientes <x_1>, ..., <x_n>.  La dependencia funcional de <x_1>,
4627     ..., <x_n> respecto de una variable independiente, por ejemplo <x>,
4628     debe indicarse expl�citamente, tanto en las variables como en las
4629     derivadas.  Por ejemplo,
4630
4631          eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
4632          eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);
4633
4634     no es el formato apropiado.  El m�todo correcto es
4635
4636          eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
4637          eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);
4638
4639     La llamada a la funci�n 'desolve' ser�a entonces
4640          desolve([eqn_1, eqn_2], [f(x),g(x)]);
4641
4642     Si las condiciones iniciales en 'x=0' son conocidas, deben ser
4643     suministradas antes de llamar a 'desolve' haciendo uso previo de la
4644     funci�n 'atvalue',
4645
4646          (%i1) 'diff(f(x),x)='diff(g(x),x)+sin(x);
4647                           d           d
4648          (%o1)            -- (f(x)) = -- (g(x)) + sin(x)
4649                           dx          dx
4650          (%i2) 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
4651                            2
4652                           d            d
4653          (%o2)            --- (g(x)) = -- (f(x)) - cos(x)
4654                             2          dx
4655                           dx
4656          (%i3) atvalue('diff(g(x),x),x=0,a);
4657          (%o3)                           a
4658          (%i4) atvalue(f(x),x=0,1);
4659          (%o4)                           1
4660          (%i5) desolve([%o1,%o2],[f(x),g(x)]);
4661                            x
4662          (%o5) [f(x) = a %e  - a + 1, g(x) =
4663
4664                                                          x
4665                                             cos(x) + a %e  - a + g(0) - 1]
4666          (%i6) [%o1,%o2],%o5,diff;
4667                       x       x      x                x
4668          (%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]
4669
4670
4671     Si 'desolve' no encuentra una soluci�n, entonces devuelve 'false'.
4672
4673 -- Funci�n: ic1 (<soluc>, <xval>, <yval>)
4674
4675     Resuelve el problema del valor inicial en ecuaciones diferenciales
4676     de primer orden.  Aqu�, <soluc> es una soluci�n general de la
4677     ecuaci�n, como las que calcula 'ode2', <xval> es una ecuaci�n de la
4678     forma '<x> = <x0>' para la variable independiente y <yval> es una
4679     ecuaci�n de la forma '<y> = <y0>' para la variable dependiente.
4680     V�ase 'ode2' para un ejemplo sobre su utilizaci�n.
4681
4682 -- Funci�n: ic2 (<soluc>, <xval>, <yval>, <dval>)
4683
4684     Resuelve el problema del valor inicial en ecuaciones diferenciales
4685     de segundo orden.  Aqu�, <soluc> es una soluci�n general de la
4686     ecuaci�n, como las que calcula 'ode2', <xval> es una ecuaci�n de la
4687     forma '<x> = <x0>' para la variable independiente y <yval> es una
4688     ecuaci�n de la forma '<y> = <y0>' para la variable dependiente,
4689     siendo <dval> una expresi�n de la forma 'diff(<y>,<x>) = <dy0>' que
4690     especifica la primera derivada de la variable dependiente respecto
4691     de la independiente en el punto <xval>.
4692
4693     V�ase 'ode2' para un ejemplo de su uso.
4694
4695 -- Funci�n: ode2 (<ecu>, <dvar>, <ivar>)
4696     La funci�n 'ode2' resuelve ecuaciones diferenciales ordinarias de
4697     primer y segundo orden.  Admite tres argumentos: una ecuaci�n
4698     diferencial ordinaria <ecu>, la variable dependiente <dvar> y la
4699     variable independiente <ivar>.  Si ha tenido �xito en la resoluci�n
4700     de la ecuaci�n, devuelve una soluci�n, expl�cita o impl�cita, para
4701     la variable dependiente.  El s�mbolo '%c' se utiliza para
4702     representar la constante en el caso de ecuaciones de primer orden y
4703     los s�mbolos '%k1' y '%k2' son las constantes de las ecuaciones de
4704     segundo orden.  Si por cualquier raz�n 'ode2' no puede calcular la
4705     soluci�n, devolver� 'false', acompa�ado quiz�s de un mensaje de
4706     error.  Los m�todos utilizados para las ecuaciones de primer orden,
4707     en el orden en que se hace la tentativa de resoluci�n son: lineal,
4708     separable, exacto (pudiendo solicitar en este caso un factor de
4709     integraci�n), homog�neo, ecuaci�n de Bernoulli y un m�todo
4710     homog�neo generalizado.  Para las ecuaciones de segundo orden:
4711     coeficiente constante, exacto, homog�neo lineal con coeficientes no
4712     constantes que pueden ser transformados en coeficientes constantes,
4713     ecuaci�n equidimensional o de Euler, m�todo de variaci�n de
4714     par�metros y ecuaciones exentas de las variables dependientes o
4715     independientes de manera que se puedan reducir a dos ecuaciones
4716     lineales de primer a ser resueltas secuencialmente.  Durante el
4717     proceso de resoluci�n de ecuaciones diferenciales ordinarias,
4718     ciertas variables se utilizan con el �nico prop�sito de suministrar
4719     informaci�n al usuario: 'method' almacena el m�todo utilizado para
4720     encontrar la soluci�n (como por ejemplo 'linear'), 'intfactor' para
4721     el factor de integraci�n que se haya podido utilizar, 'odeindex'
4722     para el �ndice del m�todo de Bernoulli o el homog�neo generalizado
4723     y 'yp' para la soluci�n particular del m�todo de variaci�n de
4724     par�metros.
4725
4726     A fin de resolver problemas con valores iniciales y problemas con
4727     valores en la frontera, la funci�n 'ic1' est� disponible para
4728     ecuaciones de primer orden y las funciones 'ic2' y 'bc2' para
4729     problemas de valores iniciales y de frontera, respectivamente, en
4730     el caso de las ecuaciones de segundo orden.
4731
4732     Ejemplo:
4733
4734          (%i1) x^2*'diff(y,x) + 3*y*x = sin(x)/x;
4735                                2 dy           sin(x)
4736          (%o1)                x  -- + 3 x y = ------
4737                                  dx             x
4738          (%i2) ode2(%,y,x);
4739                                       %c - cos(x)
4740          (%o2)                    y = -----------
4741                                            3
4742                                           x
4743          (%i3) ic1(%o2,x=%pi,y=0);
4744                                        cos(x) + 1
4745          (%o3)                   y = - ----------
4746                                             3
4747                                            x
4748          (%i4) 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
4749                                   2
4750                                  d y      dy 3
4751          (%o4)                   --- + y (--)  = 0
4752                                    2      dx
4753                                  dx
4754          (%i5) ode2(%,y,x);
4755                                3
4756                               y  + 6 %k1 y
4757          (%o5)                ------------ = x + %k2
4758                                    6
4759          (%i6) ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
4760                                       3
4761                                    2 y  - 3 y
4762          (%o6)                   - ---------- = x
4763                                        6
4764          (%i7) bc2(%o5,x=0,y=1,x=1,y=3);
4765                                   3
4766                                  y  - 10 y       3
4767          (%o7)                   --------- = x - -
4768                                      6           2
4769
4770
4771
4772File: maxima.info,  Node: M�todos num�ricos,  Next: Matrices y �lgebra Lineal,  Prev: Ecuaciones Diferenciales,  Up: Top
4773
477422 M�todos num�ricos
4775********************
4776
4777* Menu:
4778
4779* Introducci�n a la transformada r�pida de Fourier::
4780* Funciones y variables para la transformada r�pida de Fourier::
4781* Funciones para la resoluci�n num�rica de ecuaciones::
4782* Introducci�n a la resoluci�n num�rica de ecuaciones diferenciales::
4783* Funciones para la resoluci�n num�rica de ecuaciones diferenciales::
4784
4785
4786File: maxima.info,  Node: Introducci�n a la transformada r�pida de Fourier,  Next: Funciones y variables para la transformada r�pida de Fourier,  Prev: M�todos num�ricos,  Up: M�todos num�ricos
4787
478822.1 Introducci�n a la transformada r�pida de Fourier
4789=====================================================
4790
4791El paquete 'fft' contiene funciones para el c�lculo num�rico (no
4792simb�lico) de la transformada r�pida de Fourier.
4793
4794
4795File: maxima.info,  Node: Funciones y variables para la transformada r�pida de Fourier,  Next: Funciones para la resoluci�n num�rica de ecuaciones,  Prev: Introducci�n a la transformada r�pida de Fourier,  Up: M�todos num�ricos
4796
479722.2 Funciones y variables para la transformada r�pida de Fourier
4798=================================================================
4799
4800 -- Funci�n: polartorect (<magnitude_array>, <phase_array>)
4801
4802     Transforma valores complejos de la forma 'r %e^(%i t)' a la forma
4803     'a + b %i', siendo <r> el m�dulo y <t> la fase.  Ambos valores <r>
4804     y <t> son arrays unidimensionales cuyos tam�os son iguales a la
4805     misma potencia de dos.
4806
4807     Los valores originales de los arrays de entrada son reemplazados
4808     por las partes real e imaginaria, 'a' y 'b', de los
4809     correspondientes n�meros complejos.  El resultado se calcula como
4810
4811          a = r cos(t)
4812          b = r sin(t)
4813
4814     'polartorect' es la funci�n inversa de 'recttopolar'.
4815
4816     Para utilizar esta funci�n ejec�tese antes 'load(fft)'.  V�ase
4817     tambi�n 'fft'.
4818
4819 -- Funci�n: recttopolar (<real_array>, <imaginary_array>)
4820
4821     Transforma valores complejos de la forma 'a + b %i' a la forma 'r
4822     %e^(%i t)', siendo <a> la parte real y <a> la imaginaria.  Ambos
4823     valores <a> y <b> son arrays unidimensionales cuyos tam�os son
4824     iguales a la misma potencia de dos.
4825
4826     Los valores originales de los arrays de entrada son reemplazados
4827     por los m�dulos y las fases, 'r' y 't', de los correspondientes
4828     n�meros complejos.  El resultado se calcula como
4829
4830          r = sqrt(a^2 + b^2)
4831          t = atan2(b, a)
4832
4833     El �ngulo calculado pertence al rango de '-%pi' a '%pi'.
4834
4835     'recttopolar' es la funci�n inversa de 'polartorect'.
4836
4837     Para utilizar esta funci�n ejec�tese antes 'load(fft)'.  V�ase
4838     tambi�n 'fft'.
4839
4840 -- Funci�n: inverse_fft (<y>)
4841
4842     Calcula la transformada inversa r�pida de Fourier.
4843
4844     <y> es una lista o array (declarado o no) que contiene los datos a
4845     transformar.  El n�mero de elementos debe ser una potencia de dos.
4846     Los elementos deben ser n�meros literales (enteros, racionales, de
4847     punto flotante o decimales grandes), constantes simb�licas,
4848     expresiones del tipo 'a + b*%i', siendo 'a' y 'b' n�meros
4849     literales, o constantes simb�licas.
4850
4851     La funci�n 'inverse_fft' devuelve un nuevo objeto del mismo tipo
4852     que <y>, el cual no se ve modificado.  Los resultados se calculan
4853     siempre como decimales o expresiones 'a + b*%i', siendo 'a' y 'b'
4854     decimales.
4855
4856     La transformada inversa discreta de Fourier se define como se
4857     indica a continuaci�n.  Si 'x' es el resultado de la transformada
4858     inversa, entonces para 'j' entre 0 y 'n - 1' se tiene
4859
4860          x[j] = sum(y[k] exp(-2 %i %pi j k / n), k, 0, n - 1)
4861
4862     Para utilizar esta funci�n ejec�tese antes 'load(fft)'.
4863
4864     V�anse tambi�n 'fft' (transformada directa), 'recttopolar' y
4865     'polartorect'.
4866
4867     Ejemplos:
4868
4869     Datos reales.
4870
4871          (%i1) load (fft) $
4872          (%i2) fpprintprec : 4 $
4873          (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
4874          (%i4) L1 : inverse_fft (L);
4875          (%o4) [0.0, 14.49 %i - .8284, 0.0, 2.485 %i + 4.828, 0.0,
4876                                 4.828 - 2.485 %i, 0.0, - 14.49 %i - .8284]
4877          (%i5) L2 : fft (L1);
4878          (%o5) [1.0, 2.0 - 2.168L-19 %i, 3.0 - 7.525L-20 %i,
4879          4.0 - 4.256L-19 %i, - 1.0, 2.168L-19 %i - 2.0,
4880          7.525L-20 %i - 3.0, 4.256L-19 %i - 4.0]
4881          (%i6) lmax (abs (L2 - L));
4882          (%o6)                       3.545L-16
4883
4884     Datos complejos.
4885
4886          (%i1) load (fft) $
4887          (%i2) fpprintprec : 4 $
4888          (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
4889          (%i4) L1 : inverse_fft (L);
4890          (%o4) [4.0, 2.711L-19 %i + 4.0, 2.0 %i - 2.0,
4891          - 2.828 %i - 2.828, 0.0, 5.421L-20 %i + 4.0, - 2.0 %i - 2.0,
4892          2.828 %i + 2.828]
4893          (%i5) L2 : fft (L1);
4894          (%o5) [4.066E-20 %i + 1.0, 1.0 %i + 1.0, 1.0 - 1.0 %i,
4895          1.55L-19 %i - 1.0, - 4.066E-20 %i - 1.0, 1.0 - 1.0 %i,
4896          1.0 %i + 1.0, 1.0 - 7.368L-20 %i]
4897          (%i6) lmax (abs (L2 - L));
4898          (%o6)                       6.841L-17
4899
4900 -- Funci�n: fft (<x>)
4901
4902     Calcula la transformada r�pida compleja de Fourier.
4903
4904     <x> es una lista o array (declarado o no) que contiene los datos a
4905     transformar.  El n�mero de elementos debe ser una potencia de dos.
4906     Los elementos deben ser n�meros literales (enteros, racionales, de
4907     punto flotante o decimales grandes), constantes simb�licas,
4908     expresiones del tipo 'a + b*%i', siendo 'a' y 'b' n�meros
4909     literales, o constantes simb�licas.
4910
4911     La funci�n 'fft' devuelve un nuevo objeto del mismo tipo que <x>,
4912     el cual no se ve modificado.  Los resultados se calculan siempre
4913     como decimales o expresiones 'a + b*%i', siendo 'a' y 'b'
4914     decimales.
4915
4916     La transformada discreta de Fourier se define como se indica a
4917     continuaci�n.  Si 'y' es el resultado de la transformada inversa,
4918     entonces para 'k' entre 0 y 'n - 1' se tiene
4919
4920          y[k] = (1/n) sum(x[j] exp(+2 %i %pi j k / n), j, 0, n - 1)
4921
4922     Si los datos <x> son reales, los coeficientes reales 'a' y 'b' se
4923     pueden calcular de manera que
4924
4925          x[j] = sum(a[k]*cos(2*%pi*j*k/n)+b[k]*sin(2*%pi*j*k/n), k, 0, n/2)
4926
4927     con
4928
4929          a[0] = realpart (y[0])
4930          b[0] = 0
4931
4932     y, para k entre 1 y n/2 - 1,
4933
4934          a[k] = realpart (y[k] + y[n - k])
4935          b[k] = imagpart (y[n - k] - y[k])
4936
4937     y
4938
4939          a[n/2] = realpart (y[n/2])
4940          b[n/2] = 0
4941
4942     Para utilizar esta funci�n ejec�tese antes 'load(fft)'.
4943
4944     V�anse tambi�n 'inverse_fft' (transformada inversa), 'recttopolar'
4945     y 'polartorect'.
4946
4947     Ejemplos:
4948
4949     Datos reales.
4950
4951          (%i1) load (fft) $
4952          (%i2) fpprintprec : 4 $
4953          (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
4954          (%i4) L1 : fft (L);
4955          (%o4) [0.0, - 1.811 %i - .1036, 0.0, .6036 - .3107 %i, 0.0,
4956                                   .3107 %i + .6036, 0.0, 1.811 %i - .1036]
4957          (%i5) L2 : inverse_fft (L1);
4958          (%o5) [1.0, 2.168L-19 %i + 2.0, 7.525L-20 %i + 3.0,
4959          4.256L-19 %i + 4.0, - 1.0, - 2.168L-19 %i - 2.0,
4960          - 7.525L-20 %i - 3.0, - 4.256L-19 %i - 4.0]
4961          (%i6) lmax (abs (L2 - L));
4962          (%o6)                       3.545L-16
4963
4964     Datos complejos.
4965
4966          (%i1) load (fft) $
4967          (%i2) fpprintprec : 4 $
4968          (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
4969          (%i4) L1 : fft (L);
4970          (%o4) [0.5, .3536 %i + .3536, - 0.25 %i - 0.25,
4971          0.5 - 6.776L-21 %i, 0.0, - .3536 %i - .3536, 0.25 %i - 0.25,
4972          0.5 - 3.388L-20 %i]
4973          (%i5) L2 : inverse_fft (L1);
4974          (%o5) [1.0 - 4.066E-20 %i, 1.0 %i + 1.0, 1.0 - 1.0 %i,
4975          - 1.008L-19 %i - 1.0, 4.066E-20 %i - 1.0, 1.0 - 1.0 %i,
4976          1.0 %i + 1.0, 1.947L-20 %i + 1.0]
4977          (%i6) lmax (abs (L2 - L));
4978          (%o6)                       6.83L-17
4979
4980     C�lculo de los coeficientes del seno y coseno.
4981
4982          (%i1) load (fft) $
4983          (%i2) fpprintprec : 4 $
4984          (%i3) L : [1, 2, 3, 4, 5, 6, 7, 8] $
4985          (%i4) n : length (L) $
4986          (%i5) x : make_array (any, n) $
4987          (%i6) fillarray (x, L) $
4988          (%i7) y : fft (x) $
4989          (%i8) a : make_array (any, n/2 + 1) $
4990          (%i9) b : make_array (any, n/2 + 1) $
4991          (%i10) a[0] : realpart (y[0]) $
4992          (%i11) b[0] : 0 $
4993          (%i12) for k : 1 thru n/2 - 1 do
4994             (a[k] : realpart (y[k] + y[n - k]),
4995              b[k] : imagpart (y[n - k] - y[k]));
4996          (%o12)                        done
4997          (%i13) a[n/2] : y[n/2] $
4998          (%i14) b[n/2] : 0 $
4999          (%i15) listarray (a);
5000          (%o15)          [4.5, - 1.0, - 1.0, - 1.0, - 0.5]
5001          (%i16) listarray (b);
5002          (%o16)           [0, - 2.414, - 1.0, - .4142, 0]
5003          (%i17) f(j) := sum (a[k] * cos (2*%pi*j*k / n) + b[k] * sin (2*%pi*j*k / n), k, 0, n/2) $
5004          (%i18) makelist (float (f (j)), j, 0, n - 1);
5005          (%o18)      [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
5006
5007
5008File: maxima.info,  Node: Funciones para la resoluci�n num�rica de ecuaciones,  Next: Introducci�n a la resoluci�n num�rica de ecuaciones diferenciales,  Prev: Funciones y variables para la transformada r�pida de Fourier,  Up: M�todos num�ricos
5009
501022.3 Funciones para la resoluci�n num�rica de ecuaciones
5011========================================================
5012
5013 -- Funci�n: horner (<expr>, <x>)
5014 -- Funci�n: horner (<expr>)
5015     Cambia el formato de <expr> seg�n la regla de Horner utilizando <x>
5016     como variable principal, si �sta se especifica.  El argumento 'x'
5017     se puede omitir, en cuyo caso se considerar� como variable
5018     principal la de <expr> en su formato racional can�nico (CRE).
5019
5020     La funci�n 'horner' puede mejorar las estabilidad si 'expr' va a
5021     ser num�ricamente evaluada.  Tambi�n es �til si Maxima se utiliza
5022     para generar programas que ser�n ejecutados en Fortran.  V�ase
5023     tambi�n 'stringout'.
5024
5025          (%i1) expr: 1e-155*x^2 - 5.5*x + 5.2e155;
5026                                     2
5027          (%o1)            1.0E-155 x  - 5.5 x + 5.2E+155
5028          (%i2) expr2: horner (%, x), keepfloat: true;
5029          (%o2)            (1.0E-155 x - 5.5) x + 5.2E+155
5030          (%i3) ev (expr, x=1e155);
5031          Maxima encountered a Lisp error:
5032
5033           floating point overflow
5034
5035          Automatically continuing.
5036          To reenable the Lisp debugger set *debugger-hook* to nil.
5037          (%i4) ev (expr2, x=1e155);
5038          (%o4)                       7.0E+154
5039
5040 -- Funci�n: find_root (<expr>, <x>, <a>, <b>, [<abserr>, <relerr>])
5041 -- Funci�n: find_root (<f>, <a>, <b>, [<abserr>, <relerr>])
5042 -- Funci�n: bf_find_root (<expr>, <x>, <a>, <b>, [<abserr>, <relerr>])
5043 -- Funci�n: bf_find_root (<f>, <a>, <b>, [<abserr>, <relerr>])
5044 -- Variable opcional: find_root_error
5045 -- Variable opcional: find_root_abs
5046 -- Variable opcional: find_root_rel
5047
5048     Calcula una ra�z de la expresi�n <expr> o de la funci�n <f> en el
5049     intervalo cerrado [<a>, <b>].  La expresi�n <expr> puede ser una
5050     ecuaci�n, en cuyo caso 'find_root' busca una ra�z de 'lhs(<expr>) -
5051     rhs(<expr>)'.
5052
5053     Dado que Maxima puede evaluar <expr> o <f> en [<a>, <b>], entonces,
5054     si <expr> o <f> es continua, 'find_root' encuentrar� la ra�z
5055     buscada, o ra�ces, en caso de existir varias.
5056
5057     La funci�n 'find_root' aplica al principio la b�squeda por
5058     bipartici�n.  Si la expresi�n es lo suficientemente suave, entonces
5059     'find_root' aplicar� el m�todo de interpolaci�n lineal.
5060
5061     'bf_find_root' es una versi�n de 'find_root' para n�meros reales de
5062     precisi�n arbitraria (bigfloat).  La funci�n se eval�a utilizando
5063     la aritm�tica de estos n�meros, devolviendo un resultado num�rico
5064     de este tipo.  En cualquier otro aspecto, 'bf_find_root' es
5065     id�ntica a 'find_root', siendo la explicaci�n que sigue igualmente
5066     v�lida para 'bf_find_root'.
5067
5068     La precisi�n de 'find_root' est� controlada por 'abserr' y
5069     'relerr', que son claves opcionales para 'find_root'.  Estas claves
5070     toman la forma 'key=val'.  Las claves disponibles son:
5071
5072     'abserr'
5073          Error absoluto deseado de la funci�n en la ra�z.  El valor por
5074          defecto es 'find_root_abs'.
5075     'relerr'
5076          Error relativo deseado de la ra�z.  El valor por defecto es
5077          'find_root_rel'.
5078
5079     'find_root' se detiene cuando la funci�n alcanza un valor menor o
5080     igual que 'abserr', o si las sucesivas aproximaciones <x_0>, <x_1>
5081     difieren en no m�s que 'relerr * max(abs(x_0), abs(x_1))'.  Los
5082     valores por defecto de 'find_root_abs' y 'find_root_rel' son ambos
5083     cero.
5084
5085     'find_root' espera que la funci�n en cuesti�n tenga signos
5086     diferentes en los extremos del intervalo.  Si la funci�n toma
5087     valores num�ricos en ambos extremos y estos n�meros son del mismo
5088     signo, entonces el comportamiento de 'find_root' se controla con
5089     'find_root_error'.  Cuando 'find_root_error' vale 'true',
5090     'find_root' devuelve un mensaje de error; en caso contrario,
5091     'find_root' devuelve el valor de 'find_root_error'.  El valor por
5092     defecto de 'find_root_error' es 'true'.
5093
5094     Si en alg�n momento del proceso de b�squeda <f> alcanza un valor no
5095     num�rico, 'find_root' devuelve una expresi�n parcialmente evaluada.
5096
5097     Se ignora el orden de <a> y <b>; la regi�n de b�squeda es [min(<a>,
5098     <b>), max(<a>, <b>)].
5099
5100     Ejemplos:
5101
5102          (%i1) f(x) := sin(x) - x/2;
5103                                                  x
5104          (%o1)                  f(x) := sin(x) - -
5105                                                  2
5106          (%i2) find_root (sin(x) - x/2, x, 0.1, %pi);
5107          (%o2)                   1.895494267033981
5108          (%i3) find_root (sin(x) = x/2, x, 0.1, %pi);
5109          (%o3)                   1.895494267033981
5110          (%i4) find_root (f(x), x, 0.1, %pi);
5111          (%o4)                   1.895494267033981
5112          (%i5) find_root (f, 0.1, %pi);
5113          (%o5)                   1.895494267033981
5114          (%i6) find_root (exp(x) = y, x, 0, 100);
5115                                      x
5116          (%o6)           find_root(%e  = y, x, 0.0, 100.0)
5117          (%i7) find_root (exp(x) = y, x, 0, 100), y = 10;
5118          (%o7)                   2.302585092994046
5119          (%i8) log (10.0);
5120          (%o8)                   2.302585092994046
5121          (%i9) fpprec:32;
5122          (%o9)                           32
5123          (%i10) bf_find_root (exp(x) = y, x, 0, 100), y = 10;
5124          (%o10)                  2.3025850929940456840179914546844b0
5125          (%i11) log(10b0);
5126          (%o11)                  2.3025850929940456840179914546844b0
5127
5128 -- Funci�n: newton (<expr>, <x>, <x_0>, <eps>)
5129     Devuelve una soluci�n aproximada de '<expr> = 0' obtenida por el
5130     m�todo de Newton, considerando <expr> como una funci�n de una
5131     variable, <x>.  La b�squeda comienza con '<x> = <x_0>' y contin�a
5132     hasta que se verifique 'abs(<expr>) < <eps>', donde <expr> se
5133     eval�a con el valor actual de <x>.
5134
5135     La funci�n 'newton' permite que en <expr> haya variables no
5136     definidas, siempre y cuando la condici�n de terminaci�n
5137     'abs(<expr>) < <eps>' pueda reducirse a un valor l�gico 'true' o
5138     'false'; de este modo, no es necesario que <expr> tome un valor
5139     num�rico.
5140
5141     Ejec�tese 'load(newton1)' para cargar esta funci�n.
5142
5143     V�anse tambi�n 'realroots', 'allroots', 'find_root' y 'mnewton'.
5144
5145     Ejemplos:
5146
5147          (%i1) load (newton1);
5148          (%o1) /usr/share/maxima/5.10.0cvs/share/numeric/newton1.mac
5149          (%i2) newton (cos (u), u, 1, 1/100);
5150          (%o2)                   1.570675277161251
5151          (%i3) ev (cos (u), u = %);
5152          (%o3)                 1.2104963335033528E-4
5153          (%i4) assume (a > 0);
5154          (%o4)                        [a > 0]
5155          (%i5) newton (x^2 - a^2, x, a/2, a^2/100);
5156          (%o5)                  1.00030487804878 a
5157          (%i6) ev (x^2 - a^2, x = %);
5158                                                     2
5159          (%o6)                6.098490481853958E-4 a
5160
5161
5162File: maxima.info,  Node: Introducci�n a la resoluci�n num�rica de ecuaciones diferenciales,  Next: Funciones para la resoluci�n num�rica de ecuaciones diferenciales,  Prev: Funciones para la resoluci�n num�rica de ecuaciones,  Up: M�todos num�ricos
5163
516422.4 Introducci�n a la resoluci�n num�rica de ecuaciones diferenciales
5165======================================================================
5166
5167Las ecuaciones diferenciales ordinarias (EDO) que se resuelven con las
5168funciones de esta secci�n deben tener la forma
5169            dy
5170            -- = F(x,y)
5171            dx
5172la cual es una EDO de primer orden.  Las ecuaciones diferenciales de
5173orden <n> deben escribirse como un sistema de <n> ecuaciones de primer
5174orden del tipo anterior.  Por ejemplo, una EDO de segundo orden debe
5175escribirse como un sistema de dos ecuaciones,
5176            dx               dy
5177            -- = G(x,y,t)    -- = F(x,y,t)
5178            dt               dt
5179
5180El primer argumento de las funciones debe ser una lista con las
5181expresiones de los miembros derechos de las EDOs.  Las variables cuyas
5182derivadas se representan por las expresiones anteriores deben darse en
5183una segunda lista.  En el caso antes citado, las variables son <x> y
5184<y>.  La variable independiente, <t> en los mismos ejemplos anteriores,
5185pueden darse mediante una opci�n adicional.  Si las expresiones dadas no
5186dependen de esa variable independiente, el sistema recibe el nombre de
5187aut�nomo.
5188
5189
5190File: maxima.info,  Node: Funciones para la resoluci�n num�rica de ecuaciones diferenciales,  Prev: Introducci�n a la resoluci�n num�rica de ecuaciones diferenciales,  Up: M�todos num�ricos
5191
519222.5 Funciones para la resoluci�n num�rica de ecuaciones diferenciales
5193======================================================================
5194
5195 -- Funci�n: plotdf (<dydx>, ...options...)
5196 -- Funci�n: plotdf (<dvdu>, '['<u>,<v>']', ...options...)
5197 -- Funci�n: plotdf ('['<dxdt>,<dydt>']', ...options...)
5198 -- Funci�n: plotdf ('['<dudt>,<dvdt>']', '['<u>,<v>']', ...options...)
5199     Dibuja un campo de direcciones en dos dimensiones <x> y <y>.
5200
5201     <dydx>, <dxdt> y <dydt> son expresiones que dependen de <x> y <y>.
5202     Adem�s de esas dos variables, las dos expresiones pueden depender
5203     de un conjunto de par�metros, con valores num�ricos que son dados
5204     por medio de la opci�n 'parameters' (la sintaxis de esa opci�n se
5205     explica mas al frente), o con un rango de posibles valores
5206     definidos con la opci�n <sliders>.
5207
5208     Varias otras opciones se pueden incluir dentro del comando, o
5209     seleccionadas en el men�.  Haciendo click en un punto del gr�fico
5210     se puede hacer que sea dibujada la curva integral que pasa por ese
5211     punto; lo mismo puede ser hecho dando las coordenadas del punto con
5212     la opci�n 'trajectory_at' dentro del comando plotdf.  La direcci�n
5213     de integraci�n se puede controlar con la opci�n 'direction', que
5214     acepta valores de _forward_, _backward_ ou _both_.  El n�mero de
5215     pasos realizado en la integraci�n num�rica se controla con la
5216     opci�n 'nsteps' y el incremento del tiempo en cada paso con la
5217     opci�n 'tstep'.  Se usa el m�todo de Adams Moulton para hacer la
5218     integraci�n num�rica; tambi�n es posible cambiar para el m�todo de
5219     Runge-Kutta de cuarto orden con ajuste de pasos.
5220
5221     Men� de la ventana del gr�fico:
5222
5223     El men� de la ventana gr�fica dispone de las siguientes opciones:
5224     _Zoom_, que permite cambiar el comportamiento del rat�n, de manera
5225     que har� posible el hacer zoom en la regi�n del gr�fico haciendo
5226     clic con el bot�n izquierdo.  Cada clic agranda la imagen
5227     manteniendo como centro de la misma el punto sobre el cual se ha
5228     hecho clic.  Manteniendo pulsada la tecla <Shift> mientras se hace
5229     clic, retrocede al tama�o anterior.  Para reanudar el c�lculo de
5230     las trayectorias cuando se hace clic, seleccine la opci�n
5231     _Integrate_ del men�.
5232
5233     La opci�n _Config_ del men� se puede utilizar para cambiar la(s)
5234     EDO(S) y algunos otros ajustes.  Despu�s de hacer los cambios, se
5235     debe utilizar la opci�n _Replot_ para activar los nuevos ajustes.
5236     Si en el campo _Trajectory at_ del men� de di�logo de _Config_ se
5237     introducen un par de coordenadas y luego se pulsa la tecla
5238     <retorno>, se mostrar� una nueva curva integral, adem�s de las ya
5239     dibujadas.  Si se selecciona la opci�n _Replot_, s�lo se mostrar�
5240     la �ltima curva integral seleccionada.
5241
5242     Manteniendo pulsado el bot�n derecho del rat�n mientras se mueve el
5243     cursor, se puede arrastrar el gr�fico horizontal y verticalmente.
5244     Otros par�metros, como pueden ser el n�mero de pasos, el valor
5245     inicial de <t>, las coordenadas del centro y el radio, pueden
5246     cambiarse en el submen� de la opci�n _Config_.
5247
5248     Con la opci�n _Save_, se puede obtener una copia del gr�fico en una
5249     impresora Postscript o guardarlo en un fichero Postscript.  Para
5250     optar entre la impresi�n o guardar en fichero, se debe seleccionar
5251     _Print Options_ en la ventana de di�logo de _Config_.  Una vez
5252     cubiertos los campos de la ventana de di�logo de _Save_, ser�
5253     necesario seleccionar la opci�n _Save_ del primer men� para crear
5254     el fichero o imprimir el gr�fico.
5255
5256     Opciones gr�ficas:
5257
5258     La funci�n 'plotdf' admite varias opciones, cada una de las cuales
5259     es una lista de dos o m�s elementos.  El primer elemento es el
5260     nombre de la opci�n, y el resto est� formado por el valor o valores
5261     asignados a dicha opci�n.
5262
5263     La funci�n 'plotdf' reconoce las siguientes opciones:
5264
5265        * "tstep" establece la amplitud de los incrementos en la
5266          variable independiente <t>, utilizados para calcular la curva
5267          integral.  Si se aporta s�lo una expresi�n <dydx>, la variable
5268          <x> ser� directamente proporcional a <t>.  El valor por
5269          defecto es 0.1.
5270
5271        * "nsteps" establece el n�mero de pasos de longitud 'tstep' que
5272          se utilizar�n en la variable independiente para calcular la
5273          curva integral.  El valor por defecto es 100.
5274
5275        * "direction" establece la direcci�n de la variable
5276          independiente que ser� seguida para calcular una curva
5277          integral.  Valores posibles son: 'forward', para hacer que la
5278          variable independiente aumente 'nsteps' veces, con incrementos
5279          'tstep'; 'backward', para hacer que la variable independiente
5280          disminuya; 'both', para extender la curva integral 'nsteps'
5281          pasos hacia adelante y 'nsteps' pasos hacia atr�s.  Las
5282          palabras 'right' y 'left' se pueden utilizar como sin�nimos de
5283          'forward' y 'backward'.  El valor por defecto es 'both'.
5284
5285        * "tinitial" establece el valor inicial de la variable <t>
5286          utilizado para calcular curvas integrales.  Puesto que las
5287          ecuaciones diferenciales son aut�nomas, esta opci�n s�lo
5288          aparecer� en los gr�ficos de las curvas como funciones de <t>.
5289          El valor por defecto es 0.
5290
5291        * "versus_t" se utiliza para crear una segunda ventana gr�fica,
5292          con el gr�fico de una curva integral, como dos funciones <x>,
5293          <y>, de variable independiente <t>.  Si se le da a 'versus_t'
5294          cualquier valor diferente de 0, se mostrar� la segunda ventana
5295          gr�fica, la cual incluye otro men�, similar al de la ventana
5296          principal.  El valor por defecto es 0.
5297
5298        * "trajectory_at" establece las coordenadas <xinitial> y
5299          <yinitial> para el extremo inicial de la curva integral.  No
5300          tiene asignado valor por defecto.
5301
5302        * "parameters" establece una lista de par�metros, junto con sus
5303          valores num�ricos, que son utilizados en la definici�n de la
5304          ecuaci�n diferencial.  Los nombres de los par�metros y sus
5305          valores deben escribirse en formato de cadena de caracteres
5306          como una secuencia de pares 'nombre=valor' separados por
5307          comas.
5308
5309        * "sliders" establece una lista de par�metros que se cambiar�n
5310          interactivamente utilizando barras de deslizamiento, as� como
5311          los rangos de variaci�n de dichos par�metros.  Los nombres de
5312          los par�metros y sus rangos deben escribirse en formato de
5313          cadena de caracteres como una secuencia de pares
5314          'nombre=min:max' separados por comas.
5315
5316        * "xfun" establece una cadena de caracteres con funciones de <x>
5317          separadas por puntos y comas para ser representadas por encima
5318          del campo de direcciones.  Estas funciones ser�n interpretadas
5319          por Tcl, no por Maxima.
5320
5321        * "xradius" es la mitad de la longitud del rango de valores a
5322          representar en la direcci�n x.  El valor por defecto es 10.
5323
5324        * "yradius" es la mitad de la longitud del rango de valores a
5325          representar en la direcci�n y.  El valor por defecto es 10.
5326
5327        * "xcenter" es la coordenada x del punto situado en el centro
5328          del gr�fico.  El valor por defecto es 0.
5329
5330        * "ycenter" es la coordenada y del punto situado en el centro
5331          del gr�fico.  El valor por defecto es 0.
5332
5333        * "width" establece el ancho de la ventana gr�fica en p�xeles.
5334          El valor por defecto es 500.
5335
5336        * "height" establece la altura de la ventana gr�fica en p�xeles.
5337          El valor por defecto es 500.
5338
5339     Ejemplos:
5340
5341     NOTA: Dependiendo de la interface que se use para Maxima, las
5342     funciones que usan 'openmath', incluida 'plotdf', pueden
5343     desencadenar un fallo si terminan en punto y coma, en vez del
5344     s�mbolo de d�lar.  Para evitar problemas, se usar� el s�mbolo de
5345     d�lar en todos ejemplos.
5346
5347        * Para mostrar el campo de direcciones de la ecuaci�n
5348          diferencial y' = exp(-x) + y y la soluci�n que pasa por (2,
5349          -0.1):
5350               (%i1) load("plotdf")$
5351
5352               (%i2) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]);
5353
5354        * Para mostrar el campo de direcciones de la ecuaci�n diff(y,x)
5355          = x - y^2 y la soluci�n de condici�n inicial y(-1) = 3, se
5356          puede utilizar la sentencia:
5357               (%i3) plotdf(x-y^2,[xfun,"sqrt(x);-sqrt(x)"],
5358                         [trajectory_at,-1,3], [direction,forward],
5359                         [yradius,5],[xcenter,6]);
5360          El gr�fico tambi�n muestra la funci�n y = sqrt(x).
5361
5362        * El siguiente ejemplo muestra el campo de direcciones de un
5363          oscilador arm�nico, definido por las ecuaciones dx/dt = y y
5364          dy/dt = -k*x/m, y la curva integral que pasa por (x,y) =
5365          (6,0), con una barra de deslizamiento que permitir� cambiar el
5366          valor de m interactivamente (k permanece fijo a 2):
5367               (%i4) plotdf([y,-k*x/m],[parameters,"m=2,k=2"],
5368                           [sliders,"m=1:5"], [trajectory_at,6,0]);
5369
5370        * Para representar el campo de direcciones de la ecuaci�n de
5371          Duffing, m*x''+c*x'+k*x+b*x^3 = 0, se introduce la variable
5372          y=x' y se hace:
5373               (%i5) plotdf([y,-(k*x + c*y + b*x^3)/m],
5374                             [parameters,"k=-1,m=1.0,c=0,b=1"],
5375                             [sliders,"k=-2:2,m=-1:1"],[tstep,0.1]);
5376
5377        * El campo de direcciones de un p�ndulo amortiguado, incluyendo
5378          la soluci�n para condiciones iniciales dadas, con una barra de
5379          deslizamiento que se puede utilizar para cambiar el valor de
5380          la masa, m, y con el gr�fico de las dos variables de estado
5381          como funciones del tiempo:
5382
5383               (%i6) plotdf([y,-g*sin(x)/l - b*y/m/l],
5384                        [parameters,"g=9.8,l=0.5,m=0.3,b=0.05"],
5385                        [trajectory_at,1.05,-9],[tstep,0.01],
5386                        [xradius,6],[yradius,14],
5387                        [xcenter,-4],[direction,forward],[nsteps,300],
5388                        [sliders,"m=0.1:1"], [versus_t,1]);
5389
5390 -- Funci�n: ploteq (<exp>, ...options...)
5391
5392     Dibuja curvas equipotenciales para <exp>, que debe ser una
5393     expresi�n dependiente de dos variables.  Las curvas se obtienen
5394     integrando la ecuaci�n diferencial que define las trayectorias
5395     ortogonales a las soluciones del sistema aut�nomo que se obtiene
5396     del gradiente de la expresi�n dada.  El dibujo tambi�n puede
5397     mostrar las curvas integrales de ese sistema de gradientes (opci�n
5398     'fieldlines').
5399
5400     Este programa tambi�n necesita Xmaxima, incluso si se ejecuta
5401     Maxima desde una consola, pues el dibujo se crear� por el c�digo Tk
5402     de Xmaxima.  Por defecto, la regi�n dibujada estar� vac�a hasta que
5403     el usuario haga clic en un punto, d� sus coordenadas a trav�s del
5404     men� o mediante la opci�n 'trajectory_at'.
5405
5406     La mayor parte de opciones aceptadas por 'plotdf' se pueden
5407     utilizar tambi�n con 'ploteq' y el aspecto del interfaz es el mismo
5408     que el descrito para 'plotdf'.
5409
5410     Ejemplo:
5411
5412          (%i1) V: 900/((x+1)^2+y^2)^(1/2)-900/((x-1)^2+y^2)^(1/2)$
5413          (%i2) ploteq(V,[x,-2,2],[y,-2,2],[fieldlines,"blue"])$
5414
5415     Haciendo clic sobre un punto se dibujar� la curva equipotencial que
5416     pasa por ese punto (en rojo) y la trayectoria ortogonal (en azul).
5417
5418 -- Funci�n: rk (<ODE>, <var>, <initial>, <dominio>)
5419 -- Funci�n: rk ([<ODE1>,...,<ODEm>], [<v1>,...,<vm>],
5420          [<init1>,...,<initm>], <dominio>)
5421
5422     La primera forma se usa para resolver num�ricamente una ecuaci�n
5423     diferencial ordinaria de primer orden (EDO), y la segunda forma
5424     resuelve num�ricamente un sistema de <m> de esas ecuaciones, usando
5425     el m�todo de Runge-Kutta de cuarto orden.  <var> representa la
5426     variable dependiente.  EDO debe ser una expresi�n que dependa
5427     �nicamente de las variables independiente y dependente, y define la
5428     derivada de la variable dependiente en funci�n de la variable
5429     independiente.
5430
5431     La variable independiente se representa con <dominio>, que debe ser
5432     una lista con cuatro elementos, como por ejemplo:
5433          [t, 0, 10, 0.1]
5434     el primer elemento de la lista identifica la variable
5435     independiente, el segundo y tercer elementos son los valores
5436     inicial y final para esa variable, y el �ltimo elemento da el valor
5437     de los incrementos que deber�n ser usados dentro de ese intervalo.
5438
5439     Si se van a resolver <m> ecuaciones, deber� haber <m> variables
5440     dependientes <v1>, <v2>, ..., <vm>.  Los valores iniciales para
5441     esas variables ser�n <inic1>, <inic2>, ..., <inicm>.  Continuar�
5442     existiendo apenas una variable independiente definida por la lista
5443     <domain>, como en el caso anterior.  <EDO1>, ..., <EDOm> son las
5444     expresiones que definen las derivadas de cada una de las variables
5445     dependientes en funci�n de la variable independiente.  Las �nicas
5446     variables que pueden aparecer en cada una de esas expresiones son
5447     la variable independiente y cualquiera de las variables
5448     dependientes.  Es importante que las derivadas <EDO1>, ..., <EDOm>
5449     sean colocadas en la lista en el mismo orden en que fueron
5450     agrupadas las variables dependientes; por ejemplo, el tercer
5451     elemento de la lista ser� interpretado como la derivada de la
5452     tercera variable dependiente.
5453
5454     El programa intenta integrar las ecuaciones desde el valor inicial
5455     de la variable independiente, hasta el valor final, usando
5456     incrementos fijos.  Si en alg�n paso una de las variables
5457     dependientes toma un valor absoluto muy grande, la integraci�n ser�
5458     suspendida en ese punto.  El resultado ser� una lista con un n�mero
5459     de elementos igual al n�mero de iteraciones realizadas.  Cada
5460     elemento en la lista de resultados es tambi�n una lista con <m>+1
5461     elementos: el valor de la variable independiente, seguido de los
5462     valores de las variables dependientes correspondientes a ese punto.
5463
5464
5465File: maxima.info,  Node: Matrices y �lgebra Lineal,  Next: Afines,  Prev: M�todos num�ricos,  Up: Top
5466
546723 Matrices y �lgebra Lineal
5468****************************
5469
5470* Menu:
5471
5472* Introducci�n a las matrices y el �lgebra lineal::
5473* Funciones y variables para las matrices y el �lgebra lineal::
5474
5475
5476File: maxima.info,  Node: Introducci�n a las matrices y el �lgebra lineal,  Next: Funciones y variables para las matrices y el �lgebra lineal,  Prev: Matrices y �lgebra Lineal,  Up: Matrices y �lgebra Lineal
5477
547823.1 Introducci�n a las matrices y el �lgebra lineal
5479====================================================
5480
5481* Menu:
5482
5483* Operador punto::
5484* Vectores::
5485* Paquete eigen::
5486
5487
5488File: maxima.info,  Node: Operador punto,  Next: Vectores,  Prev: Introducci�n a las matrices y el �lgebra lineal,  Up: Introducci�n a las matrices y el �lgebra lineal
5489
549023.1.1 Operador punto
5491---------------------
5492
5493El operador '.' realiza la multiplicaci�n matricial y el producto
5494escalar.  Cuando los operandos son dos matrices columna o matrices fila
5495'a' y 'b', la expresi�n 'a.b' es equivalente a 'sum (a[i]*b[i], i, 1,
5496length(a))'.  Si 'a' y 'b' no son complejos, estamos en el caso del
5497producto escalar.  En caso de ser 'a' y 'b' vectores en el campo
5498complejo, el producto escalar se define como 'conjugate(a).b'; la
5499funci�n 'innerproduct' del paquete 'eigen' realiza el producto escalar
5500complejo.
5501
5502Cuando los operandos son matrices de �ndole m�s general, el resultado
5503que se obtiene es el producto matricial de 'a' por 'b'.  El n�mero de
5504filas de 'b' debe ser igual al n�mero de columnas de 'a', y el resultado
5505tiene un n�mero de filas igual al de 'a' y un n�mero de columnas igual
5506al de 'b'.
5507
5508Al objeto de distinguir '.' como operador aritm�tico del punto decimal
5509de la notaci�n en coma flotante, puede ser necesario dejar espacios a
5510ambos lados.  Por ejemplo, '5.e3' es '5000.0' pero '5 . e3' es '5' por
5511'e3'.
5512
5513Hay algunas variables globales que controlan la simplificaci�n de
5514expresiones que contengan al operador '.', a saber, 'dot',
5515'dot0nscsimp', 'dot0simp', 'dot1simp', 'dotassoc', 'dotconstrules',
5516'dotdistrib', 'dotexptsimp', 'dotident', y 'dotscrules'.
5517
5518
5519File: maxima.info,  Node: Vectores,  Next: Paquete eigen,  Prev: Operador punto,  Up: Introducci�n a las matrices y el �lgebra lineal
5520
552123.1.2 Vectores
5522---------------
5523
5524El paquete 'vect' define funciones para an�lisis vectorial.  Para cargar
5525el paquete en memoria se debe hacer 'load ("vect")' y con 'demo
5526("vect")' se presenta una demostraci�n sobre las funciones del paquete.
5527
5528El paquete de an�lisis vectorial puede combinar y simplificar
5529expresiones simb�licas que incluyan productos escalares y vectoriales,
5530junto con los operadores de gradiente, divergencia, rotacional y
5531laplaciano.  La distribuci�n de estos operadores sobre sumas o productos
5532se gobierna por ciertas variables, al igual que otras transformaciones,
5533incluida la expansi�n en componentes en cualquier sistema de coordenadas
5534especificado.  Tambi�n hay funciones para obtener el potencial escalar o
5535vectorial de un campo.
5536
5537El paquete 'vect' contiene las siguientes funciones: 'vectorsimp',
5538'scalefactors', 'express', 'potential' y 'vectorpotential'.
5539
5540Por defecto, el paquete 'vect' no declara el operador '.' como
5541conmutativo.  Para transformarlo en conmutativo, se debe ejecutar
5542previamente la instrucci�n 'declare(".", commutative)'.
5543
5544
5545File: maxima.info,  Node: Paquete eigen,  Prev: Vectores,  Up: Introducci�n a las matrices y el �lgebra lineal
5546
554723.1.3 Paquete eigen
5548--------------------
5549
5550El paquete 'eigen' contiene funciones para el c�lculo simb�lico de
5551valores y vectores propios.  Maxima carga el paquete autom�ticamente si
5552se hace una llamada a cualquiera de las dos funciones 'eigenvalues' o
5553'eigenvectors'.  El paquete se puede cargar de forma expl�cita mediante
5554'load ("eigen")'.
5555
5556La instrucci�n 'demo ("eigen")' hace una demostraci�n de las funciones
5557de este paquete; 'batch ("eigen")' realiza la misma demostraci�n pero
5558sin pausas entre los sucesivos c�lculos.
5559
5560Las funciones del paquete 'eigen' son 'innerproduct', 'unitvector',
5561'columnvector', 'gramschmidt', 'eigenvalues', 'eigenvectors',
5562'uniteigenvectors' y 'similaritytransform'.
5563
5564
5565File: maxima.info,  Node: Funciones y variables para las matrices y el �lgebra lineal,  Prev: Introducci�n a las matrices y el �lgebra lineal,  Up: Matrices y �lgebra Lineal
5566
556723.2 Funciones y variables para las matrices y el �lgebra lineal
5568================================================================
5569
5570 -- Funci�n: addcol (<M>, <lista_1>, ..., <lista_n>)
5571     A�ade la/s columna/s dada/s por la/s lista/s (o matrices) a la
5572     matriz <M>.
5573
5574 -- Funci�n: addrow (<M>, <lista_1>, ..., <lista_n>)
5575     A�ade la/s fila/s dada/s por la/s lista/s (o matrices) a la matriz
5576     <M>.
5577
5578 -- Funci�n: adjoint (<M>)
5579     Devuelve el adjunto de la matriz <M>.  La matriz adjunta es la
5580     transpuesta de la matriz de cofactores de <M>.
5581
5582 -- Funci�n: augcoefmatrix ([<eqn_1>, ..., <eqn_m>], [<x_1>, ...,
5583          <x_n>])
5584     Devuelve la matriz aumentada de coeficientes del sistema de
5585     ecuaciones lineales <eqn_1>, ..., <eqn_m> de variables <x_1>, ...,
5586     <x_n>.  Se trata de la matriz de coeficientes con una columna
5587     adicional para los t�rminos constantes de cada ecuaci�n, es decir,
5588     aquellos t�rminos que no dependen de las variables <x_1>, ...,
5589     <x_n>.
5590
5591          (%i1) m: [2*x - (a - 1)*y = 5*b, c + b*y + a*x = 0]$
5592          (%i2) augcoefmatrix (m, [x, y]);
5593                                 [ 2  1 - a  - 5 b ]
5594          (%o2)                  [                 ]
5595                                 [ a    b      c   ]
5596
5597 -- Funci�n: cauchy_matrix ([<x_1>,<x_2>, ..., <x_m>], [<y_1>,<y_2>,
5598          ..., <y_n>])
5599 -- Funci�n: cauchy_matrix ([<x_1>,<x_2>, ..., <x_n>])
5600
5601     Devuelve una matriz de Cauchy <n> by <m> de elementos <a[i,j]> =
5602     1/(<x_i>+<y_i>).  El segundo elemento de 'cauchy_matrix' es
5603     opcional, y en caso de no estar presente, los elementos ser�n de la
5604     forma <a[i,j]> = 1/(<x_i>+<x_j>).
5605
5606     Observaci�n: en la literatura, la matriz de Cauchy se define a
5607     veces con sus elementos de la forma <a[i,j]> = 1/(<x_i>-<y_i>).
5608
5609     Ejemplos:
5610
5611          (%i1) cauchy_matrix([x1,x2],[y1,y2]);
5612                                [    1        1    ]
5613                                [ -------  ------- ]
5614                                [ y1 + x1  y2 + x1 ]
5615          (%o1)                 [                  ]
5616                                [    1        1    ]
5617                                [ -------  ------- ]
5618                                [ y1 + x2  y2 + x2 ]
5619
5620          (%i2) cauchy_matrix([x1,x2]);
5621                                [   1         1    ]
5622                                [  ----    ------- ]
5623                                [  2 x1    x2 + x1 ]
5624          (%o2)                 [                  ]
5625                                [    1       1     ]
5626                                [ -------   ----   ]
5627                                [ x2 + x1   2 x2   ]
5628
5629 -- Funci�n: charpoly (<M>, <x>)
5630     Calcula el polinomio caracter�stico de la matriz <M> respecto de la
5631     variable <x>.  Esto es, 'determinant (<M> - diagmatrix (length
5632     (<M>), <x>))'.
5633
5634          (%i1) a: matrix ([3, 1], [2, 4]);
5635                                      [ 3  1 ]
5636          (%o1)                       [      ]
5637                                      [ 2  4 ]
5638          (%i2) expand (charpoly (a, lambda));
5639                                     2
5640          (%o2)                lambda  - 7 lambda + 10
5641          (%i3) (programmode: true, solve (%));
5642          (%o3)               [lambda = 5, lambda = 2]
5643          (%i4) matrix ([x1], [x2]);
5644                                       [ x1 ]
5645          (%o4)                        [    ]
5646                                       [ x2 ]
5647          (%i5) ev (a . % - lambda*%, %th(2)[1]);
5648                                    [ x2 - 2 x1 ]
5649          (%o5)                     [           ]
5650                                    [ 2 x1 - x2 ]
5651          (%i6) %[1, 1] = 0;
5652          (%o6)                     x2 - 2 x1 = 0
5653          (%i7) x2^2 + x1^2 = 1;
5654                                      2     2
5655          (%o7)                     x2  + x1  = 1
5656          (%i8) solve ([%th(2), %], [x1, x2]);
5657                            1               2
5658          (%o8) [[x1 = - -------, x2 = - -------],
5659                         sqrt(5)         sqrt(5)
5660
5661                                                       1             2
5662                                              [x1 = -------, x2 = -------]]
5663                                                    sqrt(5)       sqrt(5)
5664
5665 -- Funci�n: coefmatrix ([<eqn_1>, ..., <eqn_m>], [<x_1>, ..., <x_n>])
5666     Devuelve la matriz de coeficientes para las variables <x_1>, ...,
5667     <x_n> del sistema de ecuaciones lineales <eqn_1>, ..., <eqn_m>.
5668
5669          (%i1) coefmatrix([2*x-(a-1)*y+5*b = 0, b*y+a*x = 3], [x,y]);
5670                                           [ 2  1 - a ]
5671          (%o1)                            [          ]
5672                                           [ a    b   ]
5673
5674 -- Funci�n: col (<M>, <i>)
5675     Devuelve la <i>-�sima columna de la matriz <M>.  El resultado es
5676     una matriz de una sola columna.
5677
5678 -- Funci�n: columnvector (<L>)
5679 -- Funci�n: covect (<L>)
5680     Devuelve una matriz con una columna y 'length (<L>)' filas,
5681     conteniendo los elementos de la lista <L>.
5682
5683     La llamada 'covect' es un sin�nimo de 'columnvector'.
5684
5685     Es necesario cargar la funci�n haciendo 'load ("eigen")'.
5686
5687     Ejemplo:
5688
5689          (%i1) load ("eigen")$
5690          Warning - you are redefining the Macsyma function eigenvalues
5691          Warning - you are redefining the Macsyma function eigenvectors
5692          (%i2) columnvector ([aa, bb, cc, dd]);
5693                                       [ aa ]
5694                                       [    ]
5695                                       [ bb ]
5696          (%o2)                        [    ]
5697                                       [ cc ]
5698                                       [    ]
5699                                       [ dd ]
5700
5701 -- Funci�n: copymatrix (<M>)
5702     Devuelve una copia de la matriz <M>.  Esta es la �nica manera de
5703     obtener una r�plica de <M> adem�s de la de copiar elemento a
5704     elemento.
5705
5706     N�tese que una asignaci�n de una matriz a otra, como en 'm2: m1',
5707     no hace una copia de 'm1'.  Asignaciones del tipo 'm2 [i,j]: x' o
5708     'setelmx (x, i, j, m2' tambi�n modifica 'm1 [i,j]'.  Si se crea una
5709     copia con 'copymatrix' y luego se hacen asignaciones se tendr� una
5710     copia separada y modificada.
5711
5712 -- Funci�n: determinant (<M>)
5713     Calcula el determinante de <M> por un m�todo similar al de
5714     eliminaci�n de Gauss
5715
5716     La forma del resultado depende del valor asignado a 'ratmx'.
5717
5718     Existe una rutina especial para calcular determinantes de matrices
5719     con elementos dispersas, la cual ser� invocada cuando las variables
5720     'ratmx' y 'sparse' valgan ambas 'true'.
5721
5722 -- Variable opcional: detout
5723     Valor por defecto: 'false'
5724
5725     Cuando 'detout' vale 'true', el determinante de la matriz cuya
5726     inversa se calcula aparece como un factor fuera de la matriz.
5727
5728     Para que esta variable surta efecto, 'doallmxops' y 'doscmxops'
5729     deber�an tener el valor 'false' (v�anse sus descripciones).
5730     Alternativamente, esta variable puede ser suministrada a 'ev'.
5731
5732     Ejemplo:
5733
5734          (%i1) m: matrix ([a, b], [c, d]);
5735                                      [ a  b ]
5736          (%o1)                       [      ]
5737                                      [ c  d ]
5738          (%i2) detout: true$
5739          (%i3) doallmxops: false$
5740          (%i4) doscmxops: false$
5741          (%i5) invert (m);
5742                                    [  d   - b ]
5743                                    [          ]
5744                                    [ - c   a  ]
5745          (%o5)                     ------------
5746                                     a d - b c
5747
5748 -- Funci�n: diagmatrix (<n>, <x>)
5749     Devuelve una matriz diagonal de orden <n> con los elementos de la
5750     diagonal todos ellos iguales a <x>.  La llamada 'diagmatrix (<n>,
5751     1)' devuelve una matriz identidad (igual que 'ident (<n>)').
5752
5753     La variable <n> debe ser un n�mero entero, en caso contrario
5754     'diagmatrix' env�a un mensaje de error.
5755
5756     <x> puede ser cualquier tipo de expresi�n, incluso otra matriz.  Si
5757     <x> es una matriz, no se copia; todos los elementos de la diagonal
5758     son iguales a <x>.
5759
5760 -- Variable opcional: doallmxops
5761     Valor por defecto: 'true'
5762
5763     Cuando 'doallmxops' vale 'true', todas las operaciones relacionadas
5764     con matrices son llevadas a cabo.  Cuando es 'false', entonces las
5765     selecciones para 'dot' controlan las operaciones a ejecutar.
5766
5767 -- Variable opcional: domxexpt
5768     Valor por defecto: 'true'
5769
5770     Cuando 'domxexpt' vale 'true', un exponente matricial, como 'exp
5771     (<M>)' donde <M> es una matriz, se interpreta como una matriz cuyo
5772     elemento '[i,j' es igual a 'exp (m[i,j])'.  En otro caso, 'exp
5773     (<M>)' se eval�a como 'exp (ev(<M>))'.
5774
5775     La variable 'domxexpt' afecta a todas las expresiones de la forma
5776     '<base>^<exponente>' donde <base> es una expresi�n escalar o
5777     constante y <exponente> es una lista o matriz.
5778
5779     Ejemplo:
5780
5781          (%i1) m: matrix ([1, %i], [a+b, %pi]);
5782                                   [   1    %i  ]
5783          (%o1)                    [            ]
5784                                   [ b + a  %pi ]
5785          (%i2) domxexpt: false$
5786          (%i3) (1 - c)^m;
5787                                       [   1    %i  ]
5788                                       [            ]
5789                                       [ b + a  %pi ]
5790          (%o3)                 (1 - c)
5791          (%i4) domxexpt: true$
5792          (%i5) (1 - c)^m;
5793                            [                      %i  ]
5794                            [    1 - c      (1 - c)    ]
5795          (%o5)             [                          ]
5796                            [        b + a         %pi ]
5797                            [ (1 - c)       (1 - c)    ]
5798
5799 -- Variable opcional: domxmxops
5800     Valor por defecto: 'true'
5801
5802     Cuando 'domxmxops' vale 'true', se realizan todas las operaciones
5803     entre matrices o entre matrices y listas (pero no las operaciones
5804     entre matrices y escalares); si esta variable es 'false' tales
5805     operaciones no se realizan.
5806
5807 -- Variable opcional: domxnctimes
5808     Valor por defecto: 'false'
5809
5810     Cuando 'domxnctimes' vale 'true', se calculan los productos no
5811     conmutativos entre matrices.
5812
5813 -- Variable opcional: dontfactor
5814     Valor por defecto: '[]'
5815
5816     En 'dontfactor' puede guardarse una lista de variables respecto de
5817     las cuales no se realizar�n factorizaciones.  Inicialmente, la
5818     lista est� vac�a.
5819
5820 -- Variable opcional: doscmxops
5821     Valor por defecto: 'false'
5822
5823     Cuando 'doscmxops' vale 'true', se realizan las operaciones entre
5824     escalares y matrices.
5825
5826 -- Variable opcional: doscmxplus
5827     Valor por defecto: 'false'
5828
5829     Cuando 'doscmxplus' vale 'true', las operaciones entre escalares y
5830     matrices dan como resultado una matriz.
5831
5832 -- Variable opcional: dot0nscsimp
5833     Valor por defecto: 'true'
5834
5835     (Esta descripci�n no est� clara en la versi�n inglesa original.)
5836
5837 -- Variable opcional: dotassoc
5838     Valor por defecto: 'true'
5839
5840     Cuando 'dotassoc' vale 'true', una expresi�n como '(A.B).C' se
5841     transforma en 'A.(B.C)'.
5842
5843 -- Variable opcional: dotconstrules
5844     Valor por defecto: 'true'
5845
5846     Cuando 'dotconstrules' vale 'true', un producto no conmutativo de
5847     una constante con otro t�rmino se transforma en un producto
5848     conmutativo.
5849
5850 -- Variable opcional: dotdistrib
5851     Valor por defecto: 'false'
5852
5853     Cuando 'dotdistrib' vale 'true', una expresi�n como 'A.(B + C)' se
5854     transforma en 'A.B + A.C'.
5855
5856 -- Variable opcional: dotexptsimp
5857     Valor por defecto: 'true'
5858
5859     Cuando 'dotexptsimp' vale 'true', una expresi�n como 'A.A' se
5860     transforma en 'A^^2'.
5861
5862 -- Variable opcional: dotident
5863     Valor por defecto: 1
5864
5865     El valor de la variable 'dotident' es el resultado devuelto por
5866     'X^^0'.
5867
5868 -- Variable opcional: dotscrules
5869     Valor por defecto: 'false'
5870
5871     Cuando 'dotscrules' vale 'true', una expresi�n como 'A.SC' o 'SC.A'
5872     se transforma en 'SC*A' y 'A.(SC*B)' en 'SC*(A.B)'.
5873
5874 -- Funci�n: echelon (<M>)
5875     Devuelve la forma escalonada de la matriz <M>, obtenida por
5876     eliminaci�n gaussiana.  La forma escalonada se calcula a partir de
5877     <M> mediante operaciones elementales con sus filas, de tal manera
5878     que el primer elemento no nulo de cada fila en la matriz resultado
5879     es la unidad y que cada elemento de la columna por debajo del
5880     primer uno de cada fila sean todos ceros.
5881
5882     La funci�n 'triangularize' tambi�n lleva a cabo la eliminaci�n
5883     gaussiana, pero no normaliza el primer elemento no nulo de cada
5884     fila.
5885
5886     Otras funciones, como 'lu_factor' y 'cholesky', tambi�n dan como
5887     resultados matrices triangularizadas.
5888
5889          (%i1) M: matrix ([3, 7, aa, bb], [-1, 8, 5, 2], [9, 2, 11, 4]);
5890                                 [  3   7  aa  bb ]
5891                                 [                ]
5892          (%o1)                  [ - 1  8  5   2  ]
5893                                 [                ]
5894                                 [  9   2  11  4  ]
5895          (%i2) echelon (M);
5896                            [ 1  - 8  - 5      - 2     ]
5897                            [                          ]
5898                            [         28       11      ]
5899                            [ 0   1   --       --      ]
5900          (%o2)             [         37       37      ]
5901                            [                          ]
5902                            [              37 bb - 119 ]
5903                            [ 0   0    1   ----------- ]
5904                            [              37 aa - 313 ]
5905
5906 -- Funci�n: eigenvalues (<M>)
5907 -- Funci�n: eivals (<M>)
5908     Devuelve una lista con dos sublistas.  La primera sublista la
5909     forman los valores propios de la matriz <M> y la segunda sus
5910     multiplicidades correspondientes.
5911
5912     El nombre 'eivals' es un sin�nimo de 'eigenvalues'.
5913
5914     La funci�n 'eigenvalues' llama a la funci�n 'solve' para calcular
5915     las ra�ces del polinomio caracter�stico de la matriz.  En
5916     ocasiones, 'solve' no podr� encontrar dichas ra�ces, en cuyo caso
5917     otras funciones de este paquete no trabajar�n correctamente, a
5918     excepci�n de 'innerproduct', 'unitvector', 'columnvector' y
5919     'gramschmidt'.
5920
5921     En algunos casos los valores propios encontrados por 'solve' ser�n
5922     expresiones complicadas, las cuales se podr�n simplificar haciendo
5923     uso de otras funciones.
5924
5925     El paquete 'eigen.mac' se carga en memoria de forma autom�tica
5926     cuando se invocan 'eigenvalues' o 'eigenvectors'.  Si 'eigen.mac'
5927     no est� ya cargado, 'load ("eigen")' lo carga.  Tras la carga,
5928     todas las funciones y variables del paquete estar�n activas.
5929
5930 -- Funci�n: eigenvectors (<M>)
5931 -- Funci�n: eivects (<M>)
5932
5933     Calcula los vectores propios de la matriz <M>.  El resultado
5934     devuelto es una lista con dos elementos; el primero est� formado
5935     por dos listas, la primera con los valores propios de <M> y la
5936     segunda con sus respectivas multiplicidades, el segundo elemento es
5937     una lista de listas de vectores propios, una por cada valor propio,
5938     pudiendo haber uno o m�s vectores propios en cada lista.
5939
5940     Tomando la matriz <M> como argumento, devuelve una lista de listas,
5941     la primera de las cuales es la salida de 'eigenvalues' y las
5942     siguientes son los vectorios propios de la matriz asociados a los
5943     valores propios correspondientes.  Los vectores propios calculados
5944     son los vectores propios por la derecha.
5945
5946     El nombre 'eivects' es un sin�nimo de 'eigenvectors'.
5947
5948     El paquete 'eigen.mac' se carga en memoria de forma autom�tica
5949     cuando se invocan 'eigenvalues' o 'eigenvectors'.  Si 'eigen.mac'
5950     no est� ya cargado, 'load ("eigen")' lo carga.  Tras la carga,
5951     todas las funciones y variables del paquete estar�n activas.
5952
5953     Las variables que afectan a esta funci�n son:
5954
5955     'nondiagonalizable' toma el valor 'true' o 'false' dependiendo de
5956     si la matriz no es diagonalizable o diagonalizable tras la
5957     ejecuci�n de 'eigenvectors'.
5958
5959     'hermitianmatrix', si vale 'true', entonces los vectores propios
5960     degenerados de la matriz herm�tica son ortogonalizados mediante el
5961     algoritmo de Gram-Schmidt.
5962
5963     'knowneigvals', si vale 'true', entonces el paquete 'eigen' da por
5964     sentado que los valores propios de la matriz son conocidos por el
5965     usuario y almacenados en la variable global 'listeigvals'.
5966     'listeigvals' deber�a ser similar a la salida de 'eigenvalues'.
5967
5968     La funci�n 'algsys' se utiliza aqu� para calcular los vectores
5969     propios.  A veces, 'algsys' no podr� calcular una soluci�n.  En
5970     algunos casos, ser� posible simplificar los valores propios
5971     calcul�ndolos en primer lugar con 'eigenvalues' y luego utilizando
5972     otras funciones para simplificarlos.  Tras la simplificaci�n,
5973     'eigenvectors' podr� ser llamada otra vez con la variable
5974     'knowneigvals' ajustada al valor 'true'.
5975
5976     V�ase tambi�n 'eigenvalues'.
5977
5978     Ejemplos:
5979
5980     Una matriz con un �nico vector propio por cada valor propio.
5981
5982          (%i1) M1 : matrix ([11, -1], [1, 7]);
5983                                     [ 11  - 1 ]
5984          (%o1)                      [         ]
5985                                     [ 1    7  ]
5986          (%i2) [vals, vecs] : eigenvectors (M1);
5987          (%o2) [[[9 - sqrt(3), sqrt(3) + 9], [1, 1]],
5988                                  [[[1, sqrt(3) + 2]], [[1, 2 - sqrt(3)]]]]
5989          (%i3) for i thru length (vals[1]) do disp (val[i] = vals[1][i],
5990            mult[i] = vals[2][i], vec[i] = vecs[i]);
5991                                 val  = 9 - sqrt(3)
5992                                    1
5993
5994                                      mult  = 1
5995                                          1
5996
5997                              vec  = [[1, sqrt(3) + 2]]
5998                                 1
5999
6000                                 val  = sqrt(3) + 9
6001                                    2
6002
6003                                      mult  = 1
6004                                          2
6005
6006                              vec  = [[1, 2 - sqrt(3)]]
6007                                 2
6008
6009          (%o3)                         done
6010
6011     Una matriz con dos vectores propios para uno de los valores
6012     propios.
6013
6014          (%i1) M1 : matrix ([0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]);
6015                                   [ 0  1  0  0 ]
6016                                   [            ]
6017                                   [ 0  0  0  0 ]
6018          (%o1)                    [            ]
6019                                   [ 0  0  2  0 ]
6020                                   [            ]
6021                                   [ 0  0  0  2 ]
6022          (%i2) [vals, vecs] : eigenvectors (M1);
6023          (%o2) [[[0, 2], [2, 2]], [[[1, 0, 0, 0]],
6024                                             [[0, 0, 1, 0], [0, 0, 0, 1]]]]
6025          (%i3) for i thru length (vals[1]) do disp (val[i] = vals[1][i],
6026            mult[i] = vals[2][i], vec[i] = vecs[i]);
6027                                      val  = 0
6028                                         1
6029
6030                                      mult  = 2
6031                                          1
6032
6033                                vec  = [[1, 0, 0, 0]]
6034                                   1
6035
6036                                      val  = 2
6037                                         2
6038
6039                                      mult  = 2
6040                                          2
6041
6042                         vec  = [[0, 0, 1, 0], [0, 0, 0, 1]]
6043                            2
6044
6045          (%o3)                         done
6046
6047 -- Funci�n: ematrix (<m>, <n>, <x>, <i>, <j>)
6048     Devuelve una matriz de orden <m> por <n>, con todos sus elementos
6049     nulos, excepto el que ocupa la posici�n '[<i>, <j>]', que es igual
6050     a <x>.
6051
6052 -- Funci�n: entermatrix (<m>, <n>)
6053     Devuelve una matriz de orden <m> por <n>, cuyos elementos son
6054     leidos de forma interactiva.
6055
6056     Si <n> es igual a <m>, Maxima pregunta por el tipo de matriz
6057     (diagonal, sim�trica, antisim�trica o general) y luego por cada
6058     elemento.  Cada respuesta introducida por el usuario debe terminar
6059     con un punto y coma ';' o con un signo de d�lar '$'.
6060
6061     Si <n> y <m> no son iguales, Maxima pregunta por el valor de cada
6062     elemento.
6063
6064     Los elementos de la matriz pueden ser cualquier tipo de expresi�n,
6065     que en todo caso ser� evaluada.  'entermatrix' eval�a sus
6066     argumentos.
6067
6068          (%i1) n: 3$
6069          (%i2) m: entermatrix (n, n)$
6070
6071          Is the matrix  1. Diagonal  2. Symmetric  3. Antisymmetric
6072             4. General
6073          Answer 1, 2, 3 or 4 :
6074          1$
6075          Row 1 Column 1:
6076          (a+b)^n$
6077          Row 2 Column 2:
6078          (a+b)^(n+1)$
6079          Row 3 Column 3:
6080          (a+b)^(n+2)$
6081
6082          Matrix entered.
6083          (%i3) m;
6084                          [        3                     ]
6085                          [ (b + a)      0         0     ]
6086                          [                              ]
6087          (%o3)           [                  4           ]
6088                          [    0      (b + a)      0     ]
6089                          [                              ]
6090                          [                            5 ]
6091                          [    0         0      (b + a)  ]
6092
6093 -- Funci�n: genmatrix (<a>, <i_2>, <j_2>, <i_1>, <j_1>)
6094 -- Funci�n: genmatrix (<a>, <i_2>, <j_2>, <i_1>)
6095 -- Funci�n: genmatrix (<a>, <i_2>, <j_2>)
6096     Devuelve una matriz generada a partir de <a>, siendo
6097     '<a>[<i_1>,<j_1>]' el elemento superior izquierdo y
6098     '<a>[<i_2>,<j_2>]' el inferior derecho de la matriz.  Aqu� <a> se
6099     declara como una arreglo (creado por 'array', pero no por
6100     'make_array'), o un array no declarado, o una funci�n array, o una
6101     expresi�n lambda de dos argumentos.  (An array function is created
6102     like other functions with ':=' or 'define', but arguments are
6103     enclosed in square brackets instead of parentheses.)
6104
6105     Si se omite <j_1>, entonces se le asigna el valor <i_1>.  Si tanto
6106     <j_1> como <i_1> se omiten, a las dos variables se le asigna el
6107     valor 1.
6108
6109     Si un elemento 'i,j' del arreglo no est� definido, se le asignar�
6110     el elemento simb�lico '<a>[i,j]'.
6111
6112          (%i1) h [i, j] := 1 / (i + j - 1);
6113                                              1
6114          (%o1)                  h     := ---------
6115                                  i, j    i + j - 1
6116          (%i2) genmatrix (h, 3, 3);
6117                                     [    1  1 ]
6118                                     [ 1  -  - ]
6119                                     [    2  3 ]
6120                                     [         ]
6121                                     [ 1  1  1 ]
6122          (%o2)                      [ -  -  - ]
6123                                     [ 2  3  4 ]
6124                                     [         ]
6125                                     [ 1  1  1 ]
6126                                     [ -  -  - ]
6127                                     [ 3  4  5 ]
6128          (%i3) array (a, fixnum, 2, 2);
6129          (%o3)                           a
6130          (%i4) a [1, 1] : %e;
6131          (%o4)                          %e
6132          (%i5) a [2, 2] : %pi;
6133          (%o5)                          %pi
6134          (%i6) genmatrix (a, 2, 2);
6135                                     [ %e   0  ]
6136          (%o6)                      [         ]
6137                                     [ 0   %pi ]
6138          (%i7) genmatrix (lambda ([i, j], j - i), 3, 3);
6139                                   [  0    1   2 ]
6140                                   [             ]
6141          (%o7)                    [ - 1   0   1 ]
6142                                   [             ]
6143                                   [ - 2  - 1  0 ]
6144          (%i8) genmatrix (B, 2, 2);
6145                                  [ B      B     ]
6146                                  [  1, 1   1, 2 ]
6147          (%o8)                   [              ]
6148                                  [ B      B     ]
6149                                  [  2, 1   2, 2 ]
6150
6151 -- Funci�n: gramschmidt (<x>)
6152 -- Funci�n: gramschmidt (<x>, <F>)
6153
6154     Ejecuta el algoritmo de ortogonalizaci�n de Gram-Schmidt sobre <x>,
6155     que puede ser una matriz o una lista de listas.  La funci�n
6156     'gramschmidt' no altera el valor de <x>.  El producto interno por
6157     defecto empleado en 'gramschmidt' es 'innerproduct', o <F>, si se
6158     ha hecho uso de esta opci�n.
6159
6160     Si <x> es una matriz, el algoritmo se aplica a las filas de <x>.
6161     Si <x> es una lista de listas, el algoritmo se aplica a las
6162     sublistas, las cuales deben tener el mismo n�mero de miembros.  En
6163     cualquier caso, el valor devuelto es una lista de listas, cuyas
6164     sublistas son ortogonales.
6165
6166     La funci�n 'factor' es invocada en cada paso del algoritmo para
6167     simplificar resultados intermedios.  Como consecuencia, el valor
6168     retornado puede contener enteros factorizados.
6169
6170     El nombre 'gschmit' es sin�nimo de 'gramschmidt'.
6171
6172     Es necesario cargar la funci�n haciendo 'load ("eigen")'.
6173
6174     Ejemplo:
6175
6176     Algoritmo de Gram-Schmidt utilizando el producto interno por
6177     defecto.
6178
6179          (%i1) load (eigen)$
6180          (%i2) x: matrix ([1, 2, 3], [9, 18, 30], [12, 48, 60]);
6181                                   [ 1   2   3  ]
6182                                   [            ]
6183          (%o2)                    [ 9   18  30 ]
6184                                   [            ]
6185                                   [ 12  48  60 ]
6186          (%i3) y: gramschmidt (x);
6187                                 2      2            4     3
6188                                3      3   3 5      2  3  2  3
6189          (%o3)  [[1, 2, 3], [- ---, - --, ---], [- ----, ----, 0]]
6190                                2 7    7   2 7       5     5
6191          (%i4) map (innerproduct, [y[1], y[2], y[3]], [y[2], y[3], y[1]]);
6192          (%o4)                       [0, 0, 0]
6193
6194     Algoritmo de Gram-Schmidt utilizando un producto interno
6195     especificado por el usuario.
6196
6197          (%i1) load (eigen)$
6198          (%i2) ip (f, g) := integrate (f * g, u, a, b);
6199          (%o2)          ip(f, g) := integrate(f g, u, a, b)
6200          (%i3) y : gramschmidt ([1, sin(u), cos(u)], ip), a= -%pi/2, b=%pi/2;
6201                                         %pi cos(u) - 2
6202          (%o3)              [1, sin(u), --------------]
6203                                              %pi
6204          (%i4) map (ip, [y[1], y[2], y[3]], [y[2], y[3], y[1]]), a= -%pi/2, b=%pi/2;
6205          (%o4)                       [0, 0, 0]
6206
6207 -- Funci�n: ident (<n>)
6208     Devuelve la matriz identidad de orden <n>.
6209
6210 -- Funci�n: innerproduct (<x>, <y>)
6211 -- Funci�n: inprod (<x>, <y>)
6212     Devuelve el producto interior o escalar de <x> por <y>, que deben
6213     ser listas de igual longitud, o ambas matrices columa o fila de
6214     igual longitud.  El valor devuelto es 'conjugate (x) . y', donde
6215     '.' es el operador de multiplicaci�n no conmutativa.
6216
6217     Es necesario cargar la funci�n haciendo 'load ("eigen")'.
6218
6219     El nombre 'inprod' es sin�nimo de 'innerproduct'.
6220
6221 -- Funci�n: invert (<M>)
6222     Devuelve la inversa de la matriz <M>, calculada por el m�todo del
6223     adjunto.
6224
6225     La implementaci�n actual no es eficiente para matrices de orden
6226     grande.
6227
6228     Cuando 'detout' vale 'true', el determinante se deja fuera de la
6229     inversa a modo de factor escalar.
6230
6231     Los elementos de la matriz inversa no se expanden.  Si <M> tiene
6232     elementos polin�micos, se puede mejorar el aspecto del resultado
6233     haciendo 'expand (invert (m)), detout'.
6234
6235     V�ase la descripci�n de '^^' (exponente no conmutativo) para
6236     informaci�n sobre otro m�todo para invertir matrices.
6237
6238 -- Funci�n: list_matrix_entries (<M>)
6239     Devuelve una lista con todos los elementos de la matriz <M>.
6240
6241     Ejemplo:
6242
6243          (%i1) list_matrix_entries(matrix([a,b],[c,d]));
6244          (%o1)                     [a, b, c, d]
6245
6246 -- Variable opcional: lmxchar
6247     Valor por defecto: '['
6248
6249     La variable 'lmxchar' guarda el car�cter a mostrar como delimitador
6250     izquierdo de la matriz.  V�ase tambi�n 'rmxchar'.
6251
6252     Ejemplo:
6253
6254          (%i1) lmxchar: "|"$
6255          (%i2) matrix ([a, b, c], [d, e, f], [g, h, i]);
6256                                     | a  b  c ]
6257                                     |         ]
6258          (%o2)                      | d  e  f ]
6259                                     |         ]
6260                                     | g  h  i ]
6261
6262 -- Funci�n: matrix (<fila_1>, ..., <fila_n>)
6263     Devuelve una matriz rectangular con las filas <fila_1>, ...,
6264     <fila_n>.  Cada fila es una lista de expresiones.  Todas las filas
6265     deben tener el mismo n�mero de miembros.
6266
6267     Las operaciones '+' (suma), '-' (resta), '*' (multiplicaci�n) y '/'
6268     (divisi�n), se llevan a cabo elemento a elemento cuando los
6269     operandos son dos matrices, un escalar y una matriz o una matriz
6270     con un escalar.  La operaci�n '^' (exponenciaci�n, equivalente a
6271     '**') se lleva cabo tambi�n elemento a elemento si los operandos
6272     son un escalr y una matriz o uma matriz y un escalar, pero no si
6273     los operandos son dos matrices.
6274
6275     El producto matricial se representa con el operador de
6276     multiplicaci�n no conmutativa '.'.  El correspondiente operador de
6277     exponenciaci�n no conmutativa es '^^'.  Dada la matriz '<A>',
6278     '<A>.<A> = <A>^^2' y '<A>^^-1' es la inversa de <A>, si existe.
6279
6280     Algunas variables controlan la simplificaci�n de expresiones que
6281     incluyan estas operaciones: 'doallmxops', 'domxexpt', 'domxmxops',
6282     'doscmxops' y 'doscmxplus'.
6283
6284     Hay otras opciones adicionales relacionadas con matrices:
6285     'lmxchar', 'rmxchar', 'ratmx', 'listarith', 'detout',
6286     'scalarmatrix' y 'sparse'.
6287
6288     Hay tambi�n algunas funciones que admiten matrices como argumentos
6289     o que devuelven resultados matriciales: 'eigenvalues',
6290     'eigenvectors', 'determinant', 'charpoly', 'genmatrix', 'addcol',
6291     'addrow', 'copymatrix', 'transpose', 'echelon' y 'rank'.
6292
6293     Ejemplos:
6294
6295        * Construcci�n de matrices a partir de listas.
6296          (%i1) x: matrix ([17, 3], [-8, 11]);
6297                                     [ 17   3  ]
6298          (%o1)                      [         ]
6299                                     [ - 8  11 ]
6300          (%i2) y: matrix ([%pi, %e], [a, b]);
6301                                     [ %pi  %e ]
6302          (%o2)                      [         ]
6303                                     [  a   b  ]
6304        * Suma elemento a elemento.
6305          (%i3) x + y;
6306                                [ %pi + 17  %e + 3 ]
6307          (%o3)                 [                  ]
6308                                [  a - 8    b + 11 ]
6309        * Resta elemento a elemento.
6310          (%i4) x - y;
6311                                [ 17 - %pi  3 - %e ]
6312          (%o4)                 [                  ]
6313                                [ - a - 8   11 - b ]
6314        * Multiplicaci�n elemento a elemento.
6315          (%i5) x * y;
6316                                  [ 17 %pi  3 %e ]
6317          (%o5)                   [              ]
6318                                  [ - 8 a   11 b ]
6319        * Divisi�n elemento a elemento.
6320          (%i6) x / y;
6321                                  [ 17       - 1 ]
6322                                  [ ---  3 %e    ]
6323                                  [ %pi          ]
6324          (%o6)                   [              ]
6325                                  [   8    11    ]
6326                                  [ - -    --    ]
6327                                  [   a    b     ]
6328        * Matriz elevada a un exponente escalar, operaci�n elemento a
6329          elemento.
6330          (%i7) x ^ 3;
6331                                   [ 4913    27  ]
6332          (%o7)                    [             ]
6333                                   [ - 512  1331 ]
6334        * Base escalar y exponente matricial, operaci�n elemento a
6335          elemento.
6336          (%i8) exp(y);
6337                                   [   %pi    %e ]
6338                                   [ %e     %e   ]
6339          (%o8)                    [             ]
6340                                   [    a     b  ]
6341                                   [  %e    %e   ]
6342        * Base y exponente matriciales.  Esta operaci�n no se realiza
6343          elemento a elemento.
6344          (%i9) x ^ y;
6345                                          [ %pi  %e ]
6346                                          [         ]
6347                                          [  a   b  ]
6348                               [ 17   3  ]
6349          (%o9)                [         ]
6350                               [ - 8  11 ]
6351        * Multiplicaci�n matricial no conmutativa.
6352          (%i10) x . y;
6353                            [ 3 a + 17 %pi  3 b + 17 %e ]
6354          (%o10)            [                           ]
6355                            [ 11 a - 8 %pi  11 b - 8 %e ]
6356          (%i11) y . x;
6357                          [ 17 %pi - 8 %e  3 %pi + 11 %e ]
6358          (%o11)          [                              ]
6359                          [  17 a - 8 b     11 b + 3 a   ]
6360        * Exponenciaci�n matricial no conmutativa.  Una base escalar <b>
6361          elevada a un exponente matricial <M> se lleva a cabo elemento
6362          a elemento y por lo tanto 'b^^m' equivale a 'b^m'.
6363          (%i12) x ^^ 3;
6364                                  [  3833   1719 ]
6365          (%o12)                  [              ]
6366                                  [ - 4584  395  ]
6367          (%i13) %e ^^ y;
6368                                   [   %pi    %e ]
6369                                   [ %e     %e   ]
6370          (%o13)                   [             ]
6371                                   [    a     b  ]
6372                                   [  %e    %e   ]
6373        * Una matriz elevada al exponente -1 con el operador de
6374          exponenciaci�n no conmutativa equivale a la matriz inversa, si
6375          existe.
6376          (%i14) x ^^ -1;
6377                                   [ 11      3  ]
6378                                   [ ---  - --- ]
6379                                   [ 211    211 ]
6380          (%o14)                   [            ]
6381                                   [  8    17   ]
6382                                   [ ---   ---  ]
6383                                   [ 211   211  ]
6384          (%i15) x . (x ^^ -1);
6385                                      [ 1  0 ]
6386          (%o15)                      [      ]
6387                                      [ 0  1 ]
6388
6389 -- Funci�n: matrixmap (<f>, <M>)
6390     Devuelve una matriz con el elemento 'i,j' igual a '<f>(<M>[i,j])'.
6391
6392     V�anse tambi�n 'map', 'fullmap', 'fullmapl' y 'apply'.
6393
6394 -- Funci�n: matrixp (<expr>)
6395     Devuelve 'true' si <expr> es una matriz, en caso contrario 'false'.
6396
6397 -- Variable opcional: matrix_element_add
6398     Valor por defecto: '+'
6399
6400     La variable 'matrix_element_add' guarda el s�mbolo del operador a
6401     ejecutar en lugar de la suma en el producto matricial; a
6402     'matrix_element_add' se le puede asignar cualquier operador n-ario
6403     (esto es, una funci�n que admite cualquier n�mero de argumentos).
6404     El valor asignado puede ser el nombre de un operador encerrado
6405     entre ap�strofos, el nombre de una funci�n o una expresi�n lambda.
6406
6407     V�anse tambi�n 'matrix_element_mult' y 'matrix_element_transpose'.
6408
6409     Ejemplo:
6410
6411          (%i1) matrix_element_add: "*"$
6412          (%i2) matrix_element_mult: "^"$
6413          (%i3) aa: matrix ([a, b, c], [d, e, f]);
6414                                     [ a  b  c ]
6415          (%o3)                      [         ]
6416                                     [ d  e  f ]
6417          (%i4) bb: matrix ([u, v, w], [x, y, z]);
6418                                     [ u  v  w ]
6419          (%o4)                      [         ]
6420                                     [ x  y  z ]
6421          (%i5) aa . transpose (bb);
6422                               [  u  v  w   x  y  z ]
6423                               [ a  b  c   a  b  c  ]
6424          (%o5)                [                    ]
6425                               [  u  v  w   x  y  z ]
6426                               [ d  e  f   d  e  f  ]
6427
6428 -- Variable opcional: matrix_element_mult
6429     Valor por defecto: '*'
6430
6431     La variable 'matrix_element_mult' guarda el s�mbolo del operador a
6432     ejecutar en lugar de la multiplicaci�n en el producto matricial; a
6433     'matrix_element_mult' se le puede asignar cualquier operador
6434     binario.  El valor asignado puede ser el nombre de un operador
6435     encerrado entre ap�strofos, el nombre de una funci�n o una
6436     expresi�n lambda.
6437
6438     El operador '.' puede ser una opci�n �til en determinados
6439     contextos.
6440
6441     V�anse tambi�n 'matrix_element_add' y 'matrix_element_transpose'.
6442
6443     Ejemplo:
6444
6445          (%i1) matrix_element_add: lambda ([[x]], sqrt (apply ("+", x)))$
6446          (%i2) matrix_element_mult: lambda ([x, y], (x - y)^2)$
6447          (%i3) [a, b, c] . [x, y, z];
6448                                    2          2          2
6449          (%o3)         sqrt((c - z)  + (b - y)  + (a - x) )
6450          (%i4) aa: matrix ([a, b, c], [d, e, f]);
6451                                     [ a  b  c ]
6452          (%o4)                      [         ]
6453                                     [ d  e  f ]
6454          (%i5) bb: matrix ([u, v, w], [x, y, z]);
6455                                     [ u  v  w ]
6456          (%o5)                      [         ]
6457                                     [ x  y  z ]
6458          (%i6) aa . transpose (bb);
6459                         [             2          2          2  ]
6460                         [ sqrt((c - w)  + (b - v)  + (a - u) ) ]
6461          (%o6)  Col 1 = [                                      ]
6462                         [             2          2          2  ]
6463                         [ sqrt((f - w)  + (e - v)  + (d - u) ) ]
6464
6465                                   [             2          2          2  ]
6466                                   [ sqrt((c - z)  + (b - y)  + (a - x) ) ]
6467                           Col 2 = [                                      ]
6468                                   [             2          2          2  ]
6469                                   [ sqrt((f - z)  + (e - y)  + (d - x) ) ]
6470
6471 -- Variable opcional: matrix_element_transpose
6472     Valor por defecto: 'false'
6473
6474     La variable 'matrix_element_transpose' es una operaci�n que se
6475     aplica a cada elemento de una matriz a la que se le calcula la
6476     transpuesta.  A 'matrix_element_mult' se le puede asignar cualquier
6477     operador unitario.  El valor asignado puede ser el nombre de un
6478     operador encerrador entre ap�strofos, el nombre de una funci�n o
6479     una expresi�n lambda.
6480
6481     Cuando 'matrix_element_transpose' es igual a 'transpose', la
6482     funci�n 'transpose' se aplica a cada elemento.  Cuando
6483     'matrix_element_transpose' es igual a 'nonscalars', la funci�n
6484     'transpose' se aplica a todos los elementos no escalares.  Si
6485     alguno de los elementos es un �tomo, la opci�n 'nonscalars' se
6486     aplica 'transpose' s�lo si el �tomo se declara no escalar, mientras
6487     que la opci�n 'transpose' siempre aplica 'transpose'.
6488
6489     La opci�n por defecto, 'false', significa que no se aplica ninguna
6490     operaci�n.
6491
6492     V�anse tambi�n 'matrix_element_add' y 'matrix_element_mult'.
6493
6494     Ejemplos:
6495
6496          (%i1) declare (a, nonscalar)$
6497          (%i2) transpose ([a, b]);
6498                                  [ transpose(a) ]
6499          (%o2)                   [              ]
6500                                  [      b       ]
6501          (%i3) matrix_element_transpose: nonscalars$
6502          (%i4) transpose ([a, b]);
6503                                  [ transpose(a) ]
6504          (%o4)                   [              ]
6505                                  [      b       ]
6506          (%i5) matrix_element_transpose: transpose$
6507          (%i6) transpose ([a, b]);
6508                                  [ transpose(a) ]
6509          (%o6)                   [              ]
6510                                  [ transpose(b) ]
6511          (%i7) matrix_element_transpose:
6512                     lambda ([x], realpart(x) - %i*imagpart(x))$
6513          (%i8) m: matrix ([1 + 5*%i, 3 - 2*%i], [7*%i, 11]);
6514                               [ 5 %i + 1  3 - 2 %i ]
6515          (%o8)                [                    ]
6516                               [   7 %i       11    ]
6517          (%i9) transpose (m);
6518                                [ 1 - 5 %i  - 7 %i ]
6519          (%o9)                 [                  ]
6520                                [ 2 %i + 3    11   ]
6521
6522 -- Funci�n: mattrace (<M>)
6523     Devuelve la traza (esto es, la suma de los elementos de la diagonal
6524     principal) de la matriz cuadrada <M>.
6525
6526     Para disponer de esta funci�n es necesario cargar el paquete
6527     haciendo 'load ("nchrpl")'.
6528
6529 -- Funci�n: minor (<M>, <i>, <j>)
6530     Devuelve el menor '(<i>, <j>)' de la matriz <M>.  Esto es, la
6531     propia matriz <M>, una vez extra�das la fila <i> y la columna <j>.
6532
6533 -- Funci�n: ncharpoly (<M>, <x>)
6534     Devuelve el polinomio caracter�stico de la matriz <M> respecto de
6535     la variable <x>.  Es una alternativa a la funci�n 'charpoly' de
6536     Maxima.
6537
6538     La funci�n 'ncharpoly' opera calculando trazas de las potencias de
6539     la matriz dada, que son iguales a las sumas de las potencias de las
6540     ra�ces del polinomio caracter�stico.  A partir de estas cantidades
6541     se pueden calcular las funciones sim�tricas de las ra�ces, que no
6542     son otra cosa sino los coeficientes del polinomio caracter�stico.
6543     La funci�n 'charpoly' opera calculando el determinante de by '<x> *
6544     ident [n] - a'.  La funci�n 'ncharpoly' es m'as eficiente en el
6545     caso de matrices grandes y densas.
6546
6547     Para disponer de esta funci�n es necesario cargar el paquete
6548     haciendo 'load ("nchrpl")'.
6549
6550 -- Funci�n: newdet (<M>)
6551     Calcula el determinante de la matriz <M> por el algoritmo del �rbol
6552     menor de Johnson-Gentleman.  El resultado devuelto por 'newdet'
6553     tiene formato CRE.
6554
6555 -- Funci�n: permanent (<M>)
6556     Calcula la permanente de la matriz <M> por el algoritmo del �rbol
6557     menor de Johnson-Gentleman.  La permanente es como un determinante
6558     pero sin cambios de signo.  El resultado devuelto por 'permanent'
6559     tiene formato CRE.
6560
6561     V�ase tambi�n 'newdet'.
6562
6563 -- Funci�n: rank (<M>)
6564     Calcula el rango de la matriz <M>.  Esto es, el orden del mayor
6565     subdeterminante no singular de <M>.
6566
6567     La funci�n <rango> puede retornar una respuesta err�nea si no
6568     detecta que un elemento de la matriz equivalente a cero lo es.
6569
6570 -- Variable opcional: ratmx
6571     Valor por defecto: 'false'
6572
6573     Si 'ratmx' vale 'false', el determinante y la suma, resta y
6574     producto matriciales se calculan cuando las matrices se expresan en
6575     t�rminos de sus elementos, pero no se calcula la inversi�n
6576     matricial en su representaci�n general.
6577
6578     Si 'ratmx' vale 'true', las cuatro operaciones citadas m�s arriba
6579     se calculan en el formato CRE y el resultado de la matriz inversa
6580     tambi�n se da en formato CRE. Esto puede hacer que se expandan los
6581     elementos de la matriz, dependiendo del valor de 'ratfac', lo que
6582     quiz�s no sea siempre deseable.
6583
6584 -- Funci�n: row (<M>, <i>)
6585     Devuelve la <i>-�sima fila de la matriz <M>.  El valor que devuelve
6586     tiene formato de matriz.
6587
6588 -- Variable opcional: rmxchar
6589     Valor por defecto: ']'
6590
6591     La variable 'rmxchar' es el car�cter que se dibuja al lado derecho
6592     de una matriz.
6593
6594     V�ase tambi�n 'lmxchar'.
6595
6596 -- Variable opcional: scalarmatrixp
6597     Valor por defecto: 'true'
6598
6599     Si 'scalarmatrixp' vale 'true', entonces siempre que una matriz 1 x
6600     1 se produce como resultado del c�lculo del producto no conmutativo
6601     de matrices se cambia al formato escalar.
6602
6603     Si 'scalarmatrixp' vale 'all', entonces todas las matrices 1 x 1 se
6604     simplifican a escalares.
6605
6606     Si 'scalarmatrixp' vale 'false', las matrices 1 x 1 no se
6607     convierten en escalares.
6608
6609 -- Funci�n: setelmx (<x>, <i>, <j>, <M>)
6610     Asigna el valor <x> al (<i>, <j>)-�simo elemento de la matriz <M> y
6611     devuelve la matriz actualizada.
6612
6613     La llamada '<M> [<i>, <j>]: <x>' hace lo mismo, pero devuelve <x>
6614     en lugar de <M>.
6615
6616 -- Funci�n: similaritytransform (<M>)
6617 -- Funci�n: simtran (<M>)
6618     La funci�n 'similaritytransform' calcula la transformada de
6619     similitud de la matriz 'M'.  Devuelve una lista que es la salida de
6620     la instrucci�n 'uniteigenvectors'.  Adem�s, si la variable
6621     'nondiagonalizable' vale 'false' entonces se calculan dos matrices
6622     globales 'leftmatrix' y 'rightmatrix'.  Estas matrices tienen la
6623     propiedad de que 'leftmatrix . <M> . rightmatrix' es una matriz
6624     diagonal con los valores propios de <M> en su diagonal.  Si
6625     'nondiagonalizable' vale 'true' entonces no se calculan estas
6626     matrices.
6627
6628     Si la variable 'hermitianmatrix' vale 'true' entonces 'leftmatrix'
6629     es el conjugado complejo de la transpuesta de 'rightmatrix'.  En
6630     otro caso 'leftmatrix' es la inversa de 'rightmatrix'.
6631
6632     Las columnas de la matriz 'rightmatrix' son los vectores propios de
6633     <M>.  Las otras variables (v�anse 'eigenvalues' y 'eigenvectors')
6634     tienen el mismo efecto, puesto que 'similaritytransform' llama a
6635     las otras funciones del paquete para poder formar 'rightmatrix'.
6636
6637     Estas funciones se cargan con 'load ("eigen")'.
6638
6639     El nombre 'simtran' es sin�nimo de 'similaritytransform'.
6640
6641 -- Variable opcional: sparse
6642     Valor por defecto: 'false'
6643
6644     Si 'sparse' vale 'true' y si 'ratmx' vale 'true', entonces
6645     'determinant' utilizar� rutinas especiales para calcular
6646     determinantes dispersos.
6647
6648 -- Funci�n: submatrix (<i_1>, ..., <i_m>, <M>, <j_1>, ..., <j_n>)
6649 -- Funci�n: submatrix (<i_1>, ..., <i_m>, <M>)
6650 -- Funci�n: submatrix (<M>, <j_1>, ..., <j_n>)
6651     Devuelve una nueva matriz formada a partir de la matriz <M> pero
6652     cuyas filas <i_1>, ..., <i_m> y columnas <j_1>, ..., <j_n> han sido
6653     eliminadas.
6654
6655 -- Funci�n: transpose (<M>)
6656     Calcula la transpuesta de <M>.
6657
6658     Si <M> es una matriz, el valor devuelto es otra matriz <N> tal que
6659     'N[i,j] = M[j,i]'.
6660
6661     Si <M> es una lista, el valor devuelto es una matriz <N> de 'length
6662     (m)' filas y 1 columna, tal que 'N[i,1] = M[i]'.
6663
6664     En caso de no ser <M> ni matriz ni lista, se devuelve la expresi�n
6665     nominal ''transpose (<M>)'.
6666
6667 -- Funci�n: triangularize (<M>)
6668     Devuelve la forma triangular superior de la matriz 'M', obtenida
6669     por eliminaci�n gaussiana.  El resultado es el mismo que el
6670     devuelto por 'echelon', con la salvedad de que el primer elemento
6671     no nulo de cada fila no se normaliza a 1.
6672
6673     Las funciones 'lu_factor' y 'cholesky' tambi�n triangularizan
6674     matrices.
6675
6676          (%i1) M: matrix ([3, 7, aa, bb], [-1, 8, 5, 2], [9, 2, 11, 4]);
6677                                 [  3   7  aa  bb ]
6678                                 [                ]
6679          (%o1)                  [ - 1  8  5   2  ]
6680                                 [                ]
6681                                 [  9   2  11  4  ]
6682          (%i2) triangularize (M);
6683                       [ - 1   8         5            2      ]
6684                       [                                     ]
6685          (%o2)        [  0   - 74     - 56         - 22     ]
6686                       [                                     ]
6687                       [  0    0    626 - 74 aa  238 - 74 bb ]
6688
6689 -- Funci�n: uniteigenvectors (<M>)
6690 -- Funci�n: ueivects (<M>)
6691     Calcula los vectores propios unitarios de la matriz <M>.  El valor
6692     que devuelve es una lista de listas, la primera de las cuales es la
6693     salida de la funci�n 'eigenvalues' y el resto de sublistas son los
6694     vectores propios unitarios de la matriz correspondiente a esos
6695     valores propios, respectivamente.
6696
6697     Las variables citadas en la descripci�n de la funci�n
6698     'eigenvectors' tienen los mismos efectos en 'uniteigenvectors'.
6699
6700     Si 'knowneigvects' vale 'true', el paquete 'eigen' da por supuesto
6701     que el usuario conoce los vectores propios de la matriz y que est�n
6702     guardados en la variable global 'listeigvects', en tal caso el
6703     contenido de 'listeigvects' debe ser una lista de estructura
6704     similar a la que devuelve la funci�n 'eigenvectors'.
6705
6706     Si 'knowneigvects' vale 'true' y la lista de vectores propios est�
6707     en la variable 'listeigvects', el valor de la variable
6708     'nondiagonalizable' puede que no sea el correcto.  Si tal es el
6709     caso, debe asignarsele el valor correcto.
6710
6711     Para utilizar esta fucni�n es necesario cargarla haciendo 'load
6712     ("eigen")'.
6713
6714     El nombre 'ueivects' es sin�nimo de 'uniteigenvectors'.
6715
6716 -- Funci�n: unitvector (<x>)
6717 -- Funci�n: uvect (<x>)
6718     Devuelve <x>/norm(<x>), esto es, el vector unitario de igual
6719     direcci�n y sentido que <x>.
6720
6721     'load ("eigen")' loads this function.
6722
6723     Para utilizar esta fucni�n es necesario cargarla haciendo 'load
6724     ("eigen")'.
6725
6726     El nombre 'uvect' es sin�nimo de 'unitvector'.
6727
6728 -- Funci�n: vectorpotential (<givencurl>)
6729     Devuelve el vector potencial de un vector rotacional en el sistema
6730     de coordenadas actual.  'potentialzeroloc' tiene un rol similar al
6731     de 'potential', pero el orden del miembro izquierdo de las
6732     ecuaciones debe ser una permutaci�n c�clica de las coordenadas.
6733
6734 -- Funci�n: vectorsimp (<expr>)
6735     Realiza simplificaciones y expansiones de acuerdo con los valores
6736     de las siguientes variables globales:
6737
6738     'expandall', 'expanddot', 'expanddotplus', 'expandcross',
6739     'expandcrossplus', 'expandcrosscross', 'expandgrad',
6740     'expandgradplus', 'expandgradprod', 'expanddiv', 'expanddivplus',
6741     'expanddivprod', 'expandcurl', 'expandcurlplus', 'expandcurlcurl',
6742     'expandlaplacian', 'expandlaplacianplus' y 'expandlaplacianprod'.
6743
6744     Todas estas variables tienen por defecto el valor 'false'.  El
6745     sufijo 'plus' se refiere al uso de la suma o la distributividad.
6746     El sufijo 'prod' se refiere a la expansi�n de operadores que
6747     realizan cualquier tipo de producto.
6748
6749     'expandcrosscross'
6750          Simplifica p ~ (q ~ r) en (p . r)*q - (p . q)*r.
6751     'expandcurlcurl'
6752          Simplifica curl curl p en grad div p + div grad p.
6753     'expandlaplaciantodivgrad'
6754          Simplifica laplacian p en div grad p.
6755     'expandcross'
6756          Activa 'expandcrossplus' y 'expandcrosscross'.
6757     'expandplus'
6758          Activa 'expanddotplus', 'expandcrossplus', 'expandgradplus',
6759          'expanddivplus', 'expandcurlplus' y 'expandlaplacianplus'.
6760     'expandprod'
6761          Activa 'expandgradprod', 'expanddivprod' y
6762          'expandlaplacianprod'.
6763
6764     Estas variables est�n declaradas como 'evflag'.
6765
6766 -- Funci�n: zeromatrix (<m>, <n>)
6767     Devuelve una matriz rectangular <m> por <n> con todos sus elementos
6768     iguales a cero.
6769
6770 -- S�mbolo especial: [
6771 -- S�mbolo especial: [
6772     Los s�mbolos '[' y ']' marcan el comienzo y final, respectivamente,
6773     de una lista.
6774
6775     Los s�mbolos '[' y ']' tambi�n se utilizan para indicar los
6776     sub�ndices de los elementos de una lista, arreglo o funci�n
6777     arreglo.
6778
6779     Ejemplos:
6780
6781          (%i1) x: [a, b, c];
6782          (%o1)                       [a, b, c]
6783          (%i2) x[3];
6784          (%o2)                           c
6785          (%i3) array (y, fixnum, 3);
6786          (%o3)                           y
6787          (%i4) y[2]: %pi;
6788          (%o4)                          %pi
6789          (%i5) y[2];
6790          (%o5)                          %pi
6791          (%i6) z['foo]: 'bar;
6792          (%o6)                          bar
6793          (%i7) z['foo];
6794          (%o7)                          bar
6795          (%i8) g[k] := 1/(k^2+1);
6796                                            1
6797          (%o8)                     g  := ------
6798                                     k     2
6799                                          k  + 1
6800          (%i9) g[10];
6801                                          1
6802          (%o9)                          ---
6803                                         101
6804
6805
6806File: maxima.info,  Node: Afines,  Next: itensor,  Prev: Matrices y �lgebra Lineal,  Up: Top
6807
680824 Afines
6809*********
6810
6811* Menu:
6812
6813* Funciones y variables para Afines::
6814
6815
6816File: maxima.info,  Node: Funciones y variables para Afines,  Prev: Afines,  Up: Afines
6817
681824.1 Funciones y variables para Afines
6819======================================
6820
6821 -- Funci�n: fast_linsolve ([<expr_1>, ..., <expr_m>], [<x_1>, ...,
6822          <x_n>])
6823     Resuelve las ecuaciones lineales simult�neas <expr_1>, ...,
6824     <expr_m> para las variables <x_1>, ..., <x_n>.  Cada <expr_i> puede
6825     ser una ecuaci�n o una expresi�n general; en caso de tratarse de
6826     una expresi�n general, ser� tratada como una ecuaci�n de la forma
6827     '<expr_i> = 0'.
6828
6829     El valor que devuelve es una lista de ecuaciones de la forma
6830     '[<x_1> = <a_1>, ..., <x_n> = <a_n>]' donde todas las <a_1>, ...,
6831     <a_n> est�n exentas de <x_1>, ..., <x_n>.
6832
6833     La funci�n 'fast_linsolve' es m�s r�pida que 'linsolve' para
6834     sistemas de ecuaciones con coeficientes dispersos.
6835
6836     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6837
6838 -- Funci�n: grobner_basis ([<expr_1>, ..., <expr_m>])
6839     Devuelve una base de Groebner para las ecuaciones <expr_1>, ...,
6840     <expr_m>.  La funci�n 'polysimp' puede ser entonces utilizada para
6841     simplificar otras funciones relativas a las ecuaciones.
6842
6843          grobner_basis ([3*x^2+1, y*x])$
6844
6845          polysimp (y^2*x + x^3*9 + 2) ==> -3*x + 2
6846
6847     'polysimp(f)' alcanza 0 si y s�lo si <f> est� en el ideal generado
6848     por <expr_1>, ..., <expr_m>, es decir, si y s�lo si <f> es una
6849     combinaci�n polin�mica de los elementos de <expr_1>, ..., <expr_m>.
6850
6851     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6852
6853 -- Funci�n: set_up_dot_simplifications (<eqns>, <check_through_degree>)
6854 -- Funci�n: set_up_dot_simplifications (<eqns>)
6855
6856     Las <eqns> son ecuaciones polin�micas de variables no conmutativas.
6857     El valor de 'current_variables' es la lista de variables utilizadas
6858     para el c�lculo de los grados.  Las ecuaciones deben ser
6859     homog�neas, al objeto de completar el procedimiento.
6860
6861     El grado es el devuelto por 'nc_degree'.  �ste a su vez depende de
6862     los pesos de las variables individuales.
6863
6864     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6865
6866 -- Funci�n: declare_weights (<x_1>, <w_1>, ..., <x_n>, <w_n>)
6867     Asigna los pesos <w_1>, ..., <w_n> a <x_1>, ..., <x_n>,
6868     respectivamente.  Estos pesos son los utilizados en el c�lculo de
6869     'nc_degree'.
6870
6871     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6872
6873 -- Funci�n: nc_degree (<p>)
6874     Devuelve el grado de un polinomio no conmutativo <p>.  V�ase
6875     'declare_weights'.
6876
6877     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6878
6879 -- Funci�n: dotsimp (<f>)
6880     Devuelve 0 si y s�lo si <f> est� en el ideal generado por las
6881     ecuaciones, esto es, si y s�lo si <f> es una combinaci�n lineal de
6882     los elementos de las ecuaciones.
6883
6884     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6885
6886 -- Funci�n: fast_central_elements ([<x_1>, ..., <x_n>], <n>)
6887     Si se ha ejecutado 'set_up_dot_simplifications' con antelaci�n,
6888     obtiene los polinomios centrales de grado <n> de variables <x_1>,
6889     ..., <x_n>.
6890
6891     Por ejemplo:
6892          set_up_dot_simplifications ([y.x + x.y], 3);
6893          fast_central_elements ([x, y], 2);
6894          [y.y, x.x];
6895
6896     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6897
6898 -- Funci�n: check_overlaps (<n>, <add_to_simps>)
6899     Revisa la superposici�n hasta el grado <n>, asegur�ndose de que el
6900     usuario tiene suficientes reglas de simplificaci�n en cada grado
6901     para que 'dotsimp' trabaje correctamente.  Este proceso puede
6902     acelerarse si se conoce de antemano cu�l es la dimensi�n del
6903     espacio de monomios.  Si �ste es de dimensi�n global finita,
6904     entonces deber�a usarse 'hilbert'.  Si no se conoce la dimensiones
6905     de los monomios, no se deber�a especificar una 'rank_function'.  Un
6906     tercer argumento opcional es 'reset'.
6907
6908     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6909
6910 -- Funci�n: mono ([<x_1>, ..., <x_n>], <n>)
6911     Devuelve la lista de monomios independientes.
6912
6913     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6914
6915 -- Funci�n: monomial_dimensions (<n>)
6916     Calcula el desarrollo de Hilbert de grado <n> para el algebra
6917     actual.
6918
6919     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6920
6921 -- Funci�n: extract_linear_equations ([<p_1>, ..., <p_n>], [<m_1>, ...,
6922          <m_n>])
6923     Hace una lista de los coeficientes de los polinomios no
6924     conmutativos <p_1>, ..., <p_n> de los monomios no conmutativos
6925     <m_1>, ..., <m_n>.  Los coeficientes deben escalares.  H�gase uso
6926     de 'list_nc_monomials' para construir la lista de monomios.
6927
6928     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6929
6930 -- Funci�n: list_nc_monomials ([<p_1>, ..., <p_n>])
6931 -- Funci�n: list_nc_monomials (<p>)
6932     Devuelve una lista de los monomios no conmutativos que aparecen en
6933     el polinomio <p> o una lista de polinomios en <p_1>, ..., <p_n>.
6934
6935     Antes de utilizar esta funci�n ejec�tese 'load(affine)'.
6936
6937 -- Variable: all_dotsimp_denoms
6938     Valor por defecto: 'false'
6939
6940     Cuando 'all_dotsimp_denoms' es una lista, los denominadores
6941     encontrados por 'dotsimp' son a�adidos a la lista.  La variable
6942     'all_dotsimp_denoms' puede inicializarse como una lista vac�a '[]'
6943     antes de llamar a 'dotsimp'.
6944
6945     Por defecto, 'dotsimp' no recolecta los denominadores.
6946
6947
6948File: maxima.info,  Node: itensor,  Next: ctensor,  Prev: Afines,  Up: Top
6949
695025 itensor
6951**********
6952
6953* Menu:
6954
6955* Introducci�n a itensor::
6956* Funciones y variables para itensor::
6957
6958
6959File: maxima.info,  Node: Introducci�n a itensor,  Next: Funciones y variables para itensor,  Prev: itensor,  Up: itensor
6960
696125.1 Introducci�n a itensor
6962===========================
6963
6964Maxima implementa dos tipos diferentes de manipulaci�n simb�lica de
6965tensores: la manipulaci�n de componentes (paquete 'ctensor') y la
6966manipulaci�n indexada (paquete 'itensor').
6967
6968V�ase m�s abajo la nota sobre 'notaci�n tensorial'.
6969
6970La manipulaci�n de componentes significa que los objetos geom�tricos
6971tensoriales se representan como arreglos (arrays) o matrices.
6972Operaciones tensoriales como la contracci�n o la diferenciaci�n
6973covariante se llevan a cabo sumando �ndices mudos con la sentencia 'do'.
6974Esto es, se realizan operaciones directamente con las componentes del
6975tensor almacenadas en un arreglo o matriz.
6976
6977La manipulaci�n indexada de tensores se lleva a cabo mediante la
6978representaci�n de los tensores como funciones de sus �ndices
6979covariantes, contravariantes y de derivadas.  Operaciones tensoriales
6980como la contracci�n o la diferenciaci�n covariante se realizan
6981manipulando directamente los �ndices, en lugar de sus componentes
6982asociadas.
6983
6984Estas dos t�cnicas para el tratamiento de los procesos diferenciales,
6985algebraicos y anal�ticos en el contexto de la geometr�a riemanniana
6986tienen varias ventajas y desventajas que surgen seg�n la naturaleza y
6987dificultad del problema que est� abordando el usuario.  Sin embargo, se
6988deben tener presentes las siguientes caracter�sticas de estas dos
6989t�cnicas:
6990
6991La representaci�n de los tensores y sus operaciones en t�rminos de sus
6992componentes facilita el uso de paquete 'ctensor'.  La especificaci�n de
6993la m�trica y el c�lculo de los tensores inducidos e invariantes es
6994inmediato.  Aunque toda la potencia de simplificaci�n de Maxima se
6995encuentra siempre a mano, una m�trica compleja con dependencias
6996funcionales y de coordenadas intrincada, puede conducir a expresiones de
6997gran tama�o en las que la estructura interna quede oculta.  Adem�s,
6998muchos c�lculos requieren de expresiones intermedias que pueden provocar
6999la detenci�n s�bita de los programas antes de que se termine el c�lculo.
7000Con la experiencia, el usuario podr� evitar muchas de estas
7001dificultades.
7002
7003Devido a la forma en que los tensores y sus operaciones se representan
7004en t�rminos de operaciones simb�licas con sus �ndices, expresiones que
7005ser�an intratables en su representaci�n por componentes pueden en
7006ocasiones simplificarse notablemente utilizando las rutinas especiales
7007para objetos sim�tricos del paquete 'itensor'.  De esta manera, la
7008estructura de expresiones grandes puede hacerse m�s transparente.  Por
7009otro lado, debido a la forma especial de la representaci�n indexada de
7010tensores en 'itensor', en algunos casos el usuario encontrar�
7011dificultades con la especificaci�n de la m�trica o la definici�n de
7012funciones.
7013
7014El paquete 'itensor' puede derivar respecto de una variable indexada, lo
7015que permite utilizar el paquete cuando se haga uso del formalismo de
7016lagrangiano y hamiltoniano.  Puesto que es posible derivar un campo
7017lagrangiano respecto de una variable de campo indexada, se puede hacer
7018uso de Maxima para derivar las ecuaciones de Euler-Lagrange
7019correspondientes en forma indexada.  Estas ecuaciones pueden traducirse
7020a componentes tensoriales ('ctensor') con la funci�n 'ic_convert', lo
7021que permite resolver las ecuaciones de campo en cualquier sistema de
7022coordenadas, o obtener las ecuaciones de movimiento en forma
7023hamiltoniana.  V�anse dos ejemplos en 'einhil.dem' y 'bradic.dem'; el
7024primero utiliza la acci�n de Einstein-Hilbert para derivar el campo
7025tensorial de Einstein en el caso homog�neo e isotr�pico (ecuaciones de
7026Friedmann), as� como en el caso esferosim�trico est�tico (soluci�n de
7027Schwarzschild); el segundo demuestra c�mo calcular las ecuaciones de
7028Friedmann a partir de la acci�n de la teor�a de la gravedad de
7029Brans-Dicke, y tambi�n muestra c�mo derivar el hamiltoniano asociado con
7030la teor�a del campo escalar.
7031
703225.1.1 Notaci�n tensorial
7033-------------------------
7034
7035Hasta ahora, el paquete 'itensor' de Maxima utilizaba una notaci�n que
7036algunas veces llevaba a una ordenaci�n incorrecta de los �ndices.  Por
7037ejemplo:
7038
7039     (%i2) imetric(g);
7040     (%o2)                                done
7041     (%i3) ishow(g([],[j,k])*g([],[i,l])*a([i,j],[]))$
7042                                      i l  j k
7043     (%t3)                           g    g    a
7044                                                i j
7045     (%i4) ishow(contract(%))$
7046                                           k l
7047     (%t4)                                a
7048
7049Este resultado no es correcto a menos que 'a' sea un tensor sim�trico.
7050La raz�n por la que esto ocurre es que aunque 'itensor' mantenga
7051correctamente el orden dentro del conjunto de �ndices covariantes y
7052contravariantes, una vez un �ndice sea aumentado o disminuido, su
7053posici�n relativa al otro conjunto de �ndices se pierde.
7054
7055Para evitar este problema, se ha desarrollado una notaci�n totalmente
7056compatible con la anterior.En esta notaci�n, los �ndices contravariantes
7057se insertan en las posiciones correctas en la lista de �ndices
7058covariantes, pero precedidos del signo negativo.
7059
7060En esta notaci�n, el ejemplo anterior da el resultado correcto:
7061
7062     (%i5) ishow(g([-j,-k],[])*g([-i,-l],[])*a([i,j],[]))$
7063                                      i l       j k
7064     (%t5)                           g    a    g
7065                                           i j
7066     (%i6) ishow(contract(%))$
7067                                           l k
7068     (%t6)                                a
7069
7070El �nico c�digo que hace uso de esta notaci�n es la funci�n 'lc2kdt'.
7071
7072Devido a que este c�digo es nuevo, puede contener errores.
7073
707425.1.2 Manipulaci�n indexada de tensores
7075----------------------------------------
7076
7077El paquete 'itensor' se carga haciendo 'load(itensor)'.  Para acceder a
7078las demos se har� 'demo(tensor)'.
7079
7080En el paquete 'itensor' un tensor se representa como un objeto indexado,
7081esto es, como una funci�n de tres grupos de �ndices: los covariantes,
7082los contravariantes y los de derivadas.  Los �ndices covariantes se
7083especifican mediante una lista que ser� el primer argumento del objeto
7084indexado, siendo los �ndices contravariantes otra lista que ser� el
7085segundo argumento del mismo objeto indexado.  Si al objeto indexado le
7086falta cualquiera de estos grupos de �ndices, entonces se le asignar� al
7087argumento correspondiente la lista vac�a '[]'.  As�, 'g([a,b],[c])'
7088representa un objeto indexado llamado 'g', el cual tiene dos �ndices
7089covariantes '(a,b)', un �ndice contravariante ('c') y no tiene �ndices
7090de derivadas.
7091
7092Los �ndices de derivadas, si est�n presentes, se a�aden como argumentos
7093adicionales a la funci�n simb�lica que representa al tensor.  Se pueden
7094especificar expl�citamente por el usuario o pueden crearse durante el
7095proceso de diferenciaci�n respecto de alguna coordenada.  Puesto que la
7096diferenciaci�n ordinaria es conmutativa, los �ndices de derivadas se
7097ordenan alfanum�ricamente, a menos que la variable 'iframe_flag' valga
7098'true', indicando que se est� utilizando una m�trica del sistema de
7099referencia.  Esta ordenaci�n can�nica hace posible que Maxima reconozca,
7100por ejemplo, que 't([a],[b],i,j)' es lo mismo que 't([a],[b],j,i)'.  La
7101diferenciaci�n de un objeto indexado con respecto de alguna coordenada
7102cuyo �ndice no aparece como argumento de dicho objeto indexado, dar�
7103como resultado cero.  Esto se debe a que Maxima no sabe si el tensor
7104representado por el objeto indexado depende impl�citamente de la
7105coordenada correspondiente.  Modificando la funci�n 'diff' de Maxima en
7106'itensor', se da por hecho que todos los objetos indexados dependen de
7107cualquier variable de diferenciaci�n, a menos que se indique lo
7108contrario.  Esto hace posible que la convenci�n sobre la sumaci�n se
7109extienda a los �ndices de derivadas.  El paquete 'itensor' trata a los
7110�ndices de derivadas como covariantes.
7111
7112Las siguientes funciones forman parte del paquete 'itensor' para la
7113manipulaci�n indexada de vectores.  En lo que respecta a las rutinas de
7114simplificaci�n, no se considera en general que los objetos indexados
7115tengan propiedades sim�tricas.  Esto puede cambiarse reasignando a la
7116variable 'allsym[false]' el valor 'true', con lo cual los objetos
7117indexados se considerar�n sim�tricos tanto respecto de sus �ndices
7118covariantes como contravariantes.
7119
7120En general, el paquete 'itensor' trata a los tensores como objetos
7121opacos.  Las ecuaciones tensoriales se manipulan en base a reglas
7122algebraicas, como la simetr�a y la contracci�n.  Adem�s, en el paquete
7123'itensor' hay funciones para la diferenciaci�n covariante, la curvatura
7124y la torsi�n.  Los c�lculos se pueden realizar respecto de una m�trica
7125del sistema de referencia m�vil, dependiendo de las asignaciones dadas a
7126la variable 'iframe_flag'.
7127
7128La siguiente sesi�n de ejemplo demuestra c�mo cargar el paquete
7129'itensor', especificar el nombre de la m�trica y realizar algunos
7130c�lculos sencillos.
7131
7132     (%i1) load(itensor);
7133     (%o1)      /share/tensor/itensor.lisp
7134     (%i2) imetric(g);
7135     (%o2)                                done
7136     (%i3) components(g([i,j],[]),p([i,j],[])*e([],[]))$
7137     (%i4) ishow(g([k,l],[]))$
7138     (%t4)                               e p
7139                                            k l
7140     (%i5) ishow(diff(v([i],[]),t))$
7141     (%t5)                                  0
7142     (%i6) depends(v,t);
7143     (%o6)                               [v(t)]
7144     (%i7) ishow(diff(v([i],[]),t))$
7145                                         d
7146     (%t7)                               -- (v )
7147                                         dt   i
7148     (%i8) ishow(idiff(v([i],[]),j))$
7149     (%t8)                                v
7150                                           i,j
7151     (%i9) ishow(extdiff(v([i],[]),j))$
7152     (%t9)                             v    - v
7153                                        j,i    i,j
7154                                       -----------
7155                                            2
7156     (%i10) ishow(liediff(v,w([i],[])))$
7157                                    %3          %3
7158     (%t10)                        v   w     + v   w
7159                                        i,%3    ,i  %3
7160     (%i11) ishow(covdiff(v([i],[]),j))$
7161                                                   %4
7162     (%t11)                        v    - v   ichr2
7163                                    i,j    %4      i j
7164     (%i12) ishow(ev(%,ichr2))$
7165                     %4 %5
7166     (%t12) v    - (g      v   (e p       + e   p     - e p       - e    p
7167             i,j            %4     j %5,i    ,i  j %5      i j,%5    ,%5  i j
7168
7169                                              + e p       + e   p    ))/2
7170                                                   i %5,j    ,j  i %5
7171     (%i13) iframe_flag:true;
7172     (%o13)                               true
7173     (%i14) ishow(covdiff(v([i],[]),j))$
7174                                                  %6
7175     (%t14)                        v    - v   icc2
7176                                    i,j    %6     i j
7177     (%i15) ishow(ev(%,icc2))$
7178                                                  %6
7179     (%t15)                        v    - v   ifc2
7180                                    i,j    %6     i j
7181     (%i16) ishow(radcan(ev(%,ifc2,ifc1)))$
7182                  %6 %7                    %6 %7
7183     (%t16) - (ifg      v   ifb       + ifg      v   ifb       - 2 v
7184                         %6    j %7 i             %6    i j %7      i,j
7185
7186                                                  %6 %7
7187                                             - ifg      v   ifb      )/2
7188                                                         %6    %7 i j
7189     (%i17) ishow(canform(s([i,j],[])-s([j,i])))$
7190     (%t17)                            s    - s
7191                                        i j    j i
7192     (%i18) decsym(s,2,0,[sym(all)],[]);
7193     (%o18)                               done
7194     (%i19) ishow(canform(s([i,j],[])-s([j,i])))$
7195     (%t19)                                 0
7196     (%i20) ishow(canform(a([i,j],[])+a([j,i])))$
7197     (%t20)                            a    + a
7198                                        j i    i j
7199     (%i21) decsym(a,2,0,[anti(all)],[]);
7200     (%o21)                               done
7201     (%i22) ishow(canform(a([i,j],[])+a([j,i])))$
7202     (%t22)                                 0
7203
7204