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

« back to all changes in this revision

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

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

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
@c english version 1.23
 
2
@menu
 
3
* Definiciones para Ecuaciones::
 
4
@end menu
 
5
 
 
6
@node Definiciones para Ecuaciones,  , Ecuaciones, Ecuaciones
 
7
 
 
8
@section Definiciones para Ecuaciones
 
9
 
 
10
@defvr {Variable del sistema} %rnum_list
 
11
Valor por defecto: @code{[]}
 
12
 
 
13
La variable @code{%rnum_list} es la lista de variables introducidas en las soluciones por la funci@'on @code{algsys}.
 
14
Las variables @code{%r} se a@~naden a @code{%rnum_list} en su orden de creaci@'on. Esto es @'util para hacer sustituciones en la soluci@'on.
 
15
 
 
16
@c NEED EXAMPLE HERE
 
17
@end defvr
 
18
 
 
19
@defvr {Variable opcional} algexact
 
20
Default value: @code{false}
 
21
 
 
22
El contenido de la variable @code{algexact} afecta al comportamiento de @code{algsys} de la siguiente forma:
 
23
 
 
24
Si @code{algexact} vale @code{true}, @code{algsys} llamar@'a siempre a @code{solve} y luego utilizar@'a @code{realroots}.
 
25
 
 
26
Si @code{algexact} vale @code{false}, @code{solve} ser@'a llamada s@'olo si la ecuaci@'on no es univariante, o si es cuadr@'atica o bicuadr@'atica.
 
27
 
 
28
Sin embargo, @code{algexact: true} no garantiza que @'unicamente se obtengan soluciones exactas, ya que aunque @code{algsys} intente siempre dar soluciones exactas, dar@'a resultados aproximados si no encuentra una soluci@'on mejor.
 
29
 
 
30
@c ABOVE DESCRIPTION NOT TOO CLEAR -- MAYBE EXAMPLES WILL HELP
 
31
@end defvr
 
32
 
 
33
@deffn {Funci@'on} algsys ([@var{expr_1}, ..., @var{expr_m}], [@var{x_1}, ..., @var{x_n}])
 
34
@deffnx {Funci@'on} algsys ([@var{eqn_1}, ..., @var{eqn_m}], [@var{x_1}, ..., @var{x_n}])
 
35
 
 
36
Resuelve el sistema de ecuaciones polin@'omicas @var{expr_1}, ..., @var{expr_m}
 
37
o las ecuaciones @var{eqn_1}, ..., @var{eqn_m} para las variables @var{x_1}, ..., @var{x_n}.
 
38
La expresi@'on @var{expr} equivale a la ecuaci@'on @code{@var{expr} = 0}. Puede haber m@'as ecuaciones que variables o viceversa.
 
39
 
 
40
La funci@'on @code{algsys} devuelve una lista de soluciones, cada una de las cuales consistente a su vez en una lista de ecuaciones asociando valores a las variables @var{x_1}, ..., @var{x_n} que satisfacen el sistema de ecuaciones.
 
41
Si @code{algsys} no puede encontrar soluciones devuelve la lista vac@'{@dotless{i}}a @code{[]}.
 
42
 
 
43
Si es necesario se introducen en la soluci@'on los s@'{@dotless{i}}mbolos  @code{%r1}, @code{%r2}, ..., para representar par@'ametros arbitrarios; estas variables tambi@'en se a@~naden a la lista @code{%rnum_list}.
 
44
 
 
45
El proceso que se sigue es el siguiente:
 
46
 
 
47
(1) Primero se factorizan las ecuaciones y se reparten en subsistemas.
 
48
 
 
49
(2) Para cada subsistema @var{S_i}, se seleccionan una ecuaci@'on @var{E} y una variable @var{x}. Se elige la variable que tenga grado menor. Entonces se calcula el resultado de @var{E} y @var{E_j} respecto de @var{x}, siendo las @var{E_j} el resto de ecuaciones del subsistema @var{S_i}. De aqu@'{@dotless{i}} se obtiene otro subsistema @var{S_i'} con una inc@'ognita menos, ya que @var{x} ha sido eliminada. El proceso ahora vuelve al paso (1).
 
50
 
 
51
(3) En ocasiones se obtiene un subsistema consistente en una @'unica ecuaci@'on. Si la ecuaci@'on es multivariante y no se han introducido aproximaciones en formato decimal de coma flotante, entonces  se llama a @code{solve} para tratar de encontrar una soluci@'on exacta.
 
52
 
 
53
En algunos casos, @code{solve} no puede encontrar la soluci@'on, o si lo consigue puede que el resultado tenga una expresi@'on muy grande.
 
54
 
 
55
Si la ecuaci@'on tiene una s@'ola inc@'ognita y es lineal, o cuadr@'atica o bicuadr@'atica, entonces se llama a la funci@'on @code{solve} si no se han introducido aproximaciones en formato decimal. Si se han introducido aproximaciones, o si hay m@'as de una inc@'ognita, o si no es lineal, ni cuadr@'atica ni bicuadr@'atica, y si la variables @code{realonly} vale @code{true}, entonces se llama a la funci@'on @code{realroots} para calcular las soluciones reales.  Si
 
56
@code{realonly} vale @code{false}, entonces se llama a @code{allroots} para obtener las soluciones reales y complejas.
 
57
 
 
58
Si @code{algsys} devuelve una soluci@'on que tiene menos d@'{@dotless{i}}gitos significativos de los requeridos, el usuario puede cambiar a voluntad el valor de @code{algepsilon} para obtener mayor precisi@'on.
 
59
 
 
60
Si @code{algexact} vale @code{true}, se llamar@'a siempre a @code{solve}.
 
61
 
 
62
Cuando @code{algsys} encuentra una ecuaci@'on con m@'ultiples inc@'ognitas y que contiene aproximaciones en coma flotante (normalmente debido a la imposibilidad de encontrar soluciones exactas en pasos anteriores), entonces no intenta aplicar los m@'etodos exactos a estas ecuaciones y presenta el mensaje: 
 
63
"@code{algsys} cannot solve - system too complicated."
 
64
 
 
65
Las interacciones con @code{radcan} pueden dar lugar a expresiones grandes o complicadas. En tal caso, puede ser posible aislar partes del resultado con  @code{pickapart} o @code{reveal}.
 
66
 
 
67
Ocasionalmente, @code{radcan} puede introducir la unidad imaginaria @code{%i} en una soluci@'on que de hecho es real.
 
68
 
 
69
Ejemplos:
 
70
 
 
71
@c ===beg===
 
72
@c e1: 2*x*(1 - a1) - 2*(x - 1)*a2;
 
73
@c e2: a2 - a1;
 
74
@c e3: a1*(-y - x^2 + 1);
 
75
@c e4: a2*(y - (x - 1)^2);
 
76
@c algsys ([e1, e2, e3, e4], [x, y, a1, a2]);
 
77
@c e1: x^2 - y^2;
 
78
@c e2: -1 - y + 2*y^2 - x + x^2;
 
79
@c algsys ([e1, e2], [x, y]);
 
80
@c ===end===
 
81
@example
 
82
(%i1) e1: 2*x*(1 - a1) - 2*(x - 1)*a2;
 
83
(%o1)              2 (1 - a1) x - 2 a2 (x - 1)
 
84
(%i2) e2: a2 - a1; 
 
85
(%o2)                        a2 - a1
 
86
(%i3) e3: a1*(-y - x^2 + 1); 
 
87
                                   2
 
88
(%o3)                   a1 (- y - x  + 1)
 
89
(%i4) e4: a2*(y - (x - 1)^2);
 
90
                                       2
 
91
(%o4)                   a2 (y - (x - 1) )
 
92
(%i5) algsys ([e1, e2, e3, e4], [x, y, a1, a2]);
 
93
(%o5) [[x = 0, y = %r1, a1 = 0, a2 = 0], 
 
94
 
 
95
                                  [x = 1, y = 0, a1 = 1, a2 = 1]]
 
96
(%i6) e1: x^2 - y^2;
 
97
                              2    2
 
98
(%o6)                        x  - y
 
99
(%i7) e2: -1 - y + 2*y^2 - x + x^2;
 
100
                         2        2
 
101
(%o7)                 2 y  - y + x  - x - 1
 
102
(%i8) algsys ([e1, e2], [x, y]);
 
103
                 1            1
 
104
(%o8) [[x = - -------, y = -------], 
 
105
              sqrt(3)      sqrt(3)
 
106
 
 
107
        1              1             1        1
 
108
[x = -------, y = - -------], [x = - -, y = - -], [x = 1, y = 1]]
 
109
     sqrt(3)        sqrt(3)          3        3
 
110
@end example
 
111
 
 
112
@end deffn
 
113
 
 
114
@deffn {Funci@'on} allroots (@var{expr})
 
115
@deffnx {Funci@'on} allroots (@var{eqn})
 
116
 
 
117
Calcula aproximaciones num@'ericas de las ra@'{@dotless{i}}ces reales y complejas del polinomio @var{expr} o ecuaci@'on polin@'omica @var{eqn} de una variable.
 
118
 
 
119
@c polyfactor IS NOT OTHERWISE DOCUMENTED
 
120
Si la variable @code{polyfactor} vale @code{true} hace que la funci@'on 
 
121
@code{allroots} factorice el polinomio para n@'umeros reales si el polinomio es real, o para n@'umeros complejos si el polinomio es complejo.
 
122
 
 
123
La funci@'on @code{allroots} puede dar resultados inexactos en caso de que haya ra@'{@dotless{i}}ces m@'ultiples.
 
124
Si el polinomio es real, @code{allroots (%i*@var{p})}) puede alcanzar mejores aproximaciones que @code{allroots (@var{p})},
 
125
ya que @code{allroots} ejecuta entonces un algoritmo diferente.
 
126
 
 
127
La funci@'on @code{allroots} no opera sobre expresiones no polin@'omicas, pues requiere que el numerador sea reducible a un polinomio y el denominador sea, como mucho, un n@'umero complejo. 
 
128
 
 
129
Para polinomios complejos se utiliza el algoritmo de Jenkins y Traub descrito en (Algorithm 419, @i{Comm. ACM}, vol. 15, (1972), p. 97). Para polinomios reales se utiliza el algoritmo de Jenkins descrito en (Algorithm 493, @i{ACM TOMS},
 
130
vol. 1, (1975), p.178).
 
131
 
 
132
Ejemplos:
 
133
@c EXAMPLES GENERATED BY THESE INPUTS:
 
134
@c eqn: (1 + 2*x)^3 = 13.5*(1 + x^5);
 
135
@c soln: allroots (eqn);
 
136
@c for e in soln
 
137
@c         do (e2: subst (e, eqn), disp (expand (lhs(e2) - rhs(e2))));
 
138
@c polyfactor: true$
 
139
@c allroots (eqn);
 
140
 
 
141
@example
 
142
(%i1) eqn: (1 + 2*x)^3 = 13.5*(1 + x^5);
 
143
                            3          5
 
144
(%o1)              (2 x + 1)  = 13.5 (x  + 1)
 
145
(%i2) soln: allroots (eqn);
 
146
(%o2) [x = .8296749902129361, x = - 1.015755543828121, 
 
147
 
 
148
x = .9659625152196369 %i - .4069597231924075, 
 
149
 
 
150
x = - .9659625152196369 %i - .4069597231924075, x = 1.0]
 
151
(%i3) for e in soln
 
152
        do (e2: subst (e, eqn), disp (expand (lhs(e2) - rhs(e2))));
 
153
                      - 3.5527136788005E-15
 
154
 
 
155
                     - 5.32907051820075E-15
 
156
 
 
157
         4.44089209850063E-15 %i - 4.88498130835069E-15
 
158
 
 
159
        - 4.44089209850063E-15 %i - 4.88498130835069E-15
 
160
 
 
161
                       3.5527136788005E-15
 
162
 
 
163
(%o3)                         done
 
164
(%i4) polyfactor: true$
 
165
(%i5) allroots (eqn);
 
166
(%o5) - 13.5 (x - 1.0) (x - .8296749902129361)
 
167
 
 
168
                           2
 
169
 (x + 1.015755543828121) (x  + .8139194463848151 x
 
170
 
 
171
 + 1.098699797110288)
 
172
@end example
 
173
 
 
174
@end deffn
 
175
 
 
176
@c FALTA AQUI LA DEFINICION DE backsubst
 
177
 
 
178
@defvr {Variable opcional} breakup
 
179
Valor por defecto: @code{true}
 
180
 
 
181
Si @code{breakup} vale @code{true}, @code{solve} expresa sus soluciones a las ecuaciones c@'ubicas y cu@'articas en t@'erminos de subexpresiones comunes, las cuales son asignadas a etiquetas del tipo @code{%t1}, @code{%t2}, etc.
 
182
En otro caso, no se identifican subexpresiones comunes.
 
183
 
 
184
La asignaci@'on @code{breakup: true} s@'olo tiene efecto cuando @code{programmode} vale @code{false}.
 
185
 
 
186
Ejemplos:
 
187
 
 
188
@example
 
189
(%i1) programmode: false$
 
190
(%i2) breakup: true$
 
191
(%i3) solve (x^3 + x^2 - 1);
 
192
 
 
193
                        sqrt(23)    25 1/3
 
194
(%t3)                  (--------- + --)
 
195
                        6 sqrt(3)   54
 
196
Solution:
 
197
 
 
198
                                      sqrt(3) %i   1
 
199
                                      ---------- - -
 
200
                sqrt(3) %i   1            2        2   1
 
201
(%t4)    x = (- ---------- - -) %t3 + -------------- - -
 
202
                    2        2            9 %t3        3
 
203
 
 
204
                                      sqrt(3) %i   1
 
205
                                    - ---------- - -
 
206
              sqrt(3) %i   1              2        2   1
 
207
(%t5)    x = (---------- - -) %t3 + ---------------- - -
 
208
                  2        2             9 %t3         3
 
209
 
 
210
                                   1     1
 
211
(%t6)                  x = %t3 + ----- - -
 
212
                                 9 %t3   3
 
213
(%o6)                    [%t4, %t5, %t6]
 
214
(%i6) breakup: false$
 
215
(%i7) solve (x^3 + x^2 - 1);
 
216
Solution:
 
217
 
 
218
             sqrt(3) %i   1
 
219
             ---------- - -
 
220
                 2        2        sqrt(23)    25 1/3
 
221
(%t7) x = --------------------- + (--------- + --)
 
222
             sqrt(23)    25 1/3    6 sqrt(3)   54
 
223
          9 (--------- + --)
 
224
             6 sqrt(3)   54
 
225
 
 
226
                                              sqrt(3) %i   1    1
 
227
                                           (- ---------- - -) - -
 
228
                                                  2        2    3
 
229
 
 
230
           sqrt(23)    25 1/3  sqrt(3) %i   1
 
231
(%t8) x = (--------- + --)    (---------- - -)
 
232
           6 sqrt(3)   54          2        2
 
233
 
 
234
                                            sqrt(3) %i   1
 
235
                                          - ---------- - -
 
236
                                                2        2      1
 
237
                                      + --------------------- - -
 
238
                                           sqrt(23)    25 1/3   3
 
239
                                        9 (--------- + --)
 
240
                                           6 sqrt(3)   54
 
241
 
 
242
            sqrt(23)    25 1/3             1             1
 
243
(%t9)  x = (--------- + --)    + --------------------- - -
 
244
            6 sqrt(3)   54          sqrt(23)    25 1/3   3
 
245
                                 9 (--------- + --)
 
246
                                    6 sqrt(3)   54
 
247
(%o9)                    [%t7, %t8, %t9]
 
248
@end example
 
249
 
 
250
@end defvr
 
251
 
 
252
@deffn {Funci@'on} dimension (@var{eqn})
 
253
@deffnx {Funci@'on} dimension (@var{eqn_1}, ..., @var{eqn_n})
 
254
 
 
255
El paquete @code{dimen} es para an@'alisis dimensional. La instrucci@'on @code{load ("dimen")} carga el paquete y
 
256
@code{demo ("dimen")} presenta una peque@~na demostraci@'on.
 
257
@c I GUESS THIS SHOULD BE EXPANDED TO COVER EACH FUNCTION IN THE PACKAGE
 
258
 
 
259
@end deffn
 
260
 
 
261
@defvr {Variable opcional} dispflag
 
262
Valor por defecto: @code{true}
 
263
 
 
264
@c WHAT DOES THIS MEAN ??
 
265
Si @code{dispflag} vale @code{false}, entonces se inhibir@'a que Maxima muestre resultados de las funciones que resuelven ecuaciones cuando @'estas son llamadas desde dentro de un bloque (@code{block}). Cuando un bloque termina con el signo del d@'olar, $, a la variable @code{dispflag} se le asigna @code{false}.
 
266
 
 
267
@end defvr
 
268
 
 
269
@deffn {Funci@'on} funcsolve (@var{eqn}, @var{g}(@var{t}))
 
270
 
 
271
Devuelve @code{[@var{g}(@var{t}) = ...]}  o @code{[]}, dependiendo de que exista o no una funci@'on racional  @code{@var{g}(@var{t})} que satisfaga @var{eqn}, la cual debe ser un polinomio de primer orden, lineal para @code{@var{g}(@var{t})} y @code{@var{g}(@var{t}+1)}
 
272
 
 
273
@example
 
274
(%i1) eqn: (n + 1)*f(n) - (n + 3)*f(n + 1)/(n + 1) = (n - 1)/(n + 2);
 
275
                            (n + 3) f(n + 1)   n - 1
 
276
(%o1)        (n + 1) f(n) - ---------------- = -----
 
277
                                 n + 1         n + 2
 
278
(%i2) funcsolve (eqn, f(n));
 
279
 
 
280
Dependent equations eliminated:  (4 3)
 
281
                                   n
 
282
(%o2)                f(n) = ---------------
 
283
                            (n + 1) (n + 2)
 
284
@end example
 
285
 
 
286
Aviso: esta es una implemetaci@'on rudimentaria, por lo que debe ser utilizada con cautela.
 
287
 
 
288
@end deffn
 
289
 
 
290
@defvr {Variable opcional} globalsolve
 
291
Valor por defecto: @code{false}
 
292
 
 
293
Si @code{globalsolve} vale @code{true},
 
294
a las inc@'ognitas de las ecuaciones se les asignan las soluciones encontradas por @code{linsolve} y
 
295
por @code{solve} cuando se resuelven sistemas de dos o m@'as ecuaciones lineales.
 
296
 
 
297
Si @code{globalsolve} vale @code{false},
 
298
las soluciones encontradas por @code{linsolve} y por @code{solve} cuando se resuelven sistemas de dos o m@'as ecuaciones lineales se expresan como ecuaciones y a las inc@'ognitas no se le asignan valores.
 
299
 
 
300
Cuando se resuelven ecuaciones que no son sistemas de dos o m@'as ecuaciones lineales, @code{solve} ignora el valor de @code{globalsolve}. Otras funciones que resuelven ecuaciones (como @code{algsys}) ignoran siempre el valor de @code{globalsolve}.
 
301
 
 
302
Ejemplos:
 
303
 
 
304
@example
 
305
(%i1) globalsolve: true$
 
306
(%i2) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]);
 
307
Solution
 
308
 
 
309
                                 17
 
310
(%t2)                        x : --
 
311
                                 7
 
312
 
 
313
                                   1
 
314
(%t3)                        y : - -
 
315
                                   7
 
316
(%o3)                     [[%t2, %t3]]
 
317
(%i3) x;
 
318
                               17
 
319
(%o3)                          --
 
320
                               7
 
321
(%i4) y;
 
322
                                 1
 
323
(%o4)                          - -
 
324
                                 7
 
325
(%i5) globalsolve: false$
 
326
(%i6) kill (x, y)$
 
327
(%i7) solve ([x + 3*y = 2, 2*x - y = 5], [x, y]);
 
328
Solution
 
329
 
 
330
                                 17
 
331
(%t7)                        x = --
 
332
                                 7
 
333
 
 
334
                                   1
 
335
(%t8)                        y = - -
 
336
                                   7
 
337
(%o8)                     [[%t7, %t8]]
 
338
(%i8) x;
 
339
(%o8)                           x
 
340
(%i9) y;
 
341
(%o9)                           y
 
342
@end example
 
343
 
 
344
@end defvr
 
345
 
 
346
@deffn {Funci@'on} ieqn (@var{ie}, @var{unk}, @var{tech}, @var{n}, @var{guess})
 
347
El paquete @code{inteqn} se dedica a la resoluci@'on de ecuaciones integrales. Para hacer uso de @'el, ejecutar la instrucci@'on @code{load ("inteqn")}.
 
348
 
 
349
El argumento @var{ie} es la ecuaci@'on integral; @var{unk} es la funci@'on inc@'ognita; @var{tech} es el m@'etodo a aplicar para efectuar la resoluci@'on del problema (@var{tech} = @code{first} significa: aplica el primer m@'etodo que encuentre una soluci@'on; @var{tech} = @code{all} significa: aplica todos los m@'etodos posibles); @var{n} es el n@'umero m@'aximo de t@'erminos que debe tomar @code{taylor}, @code{neumann}, @code{firstkindseries} o @code{fredseries} (tambi@'en es el m@'aximo nivel de recursi@'on para el m@'etodo de diferenciaci@'on); @var{guess} es la soluci@'on candidata inicial para @code{neumann} o @code{firstkindseries}.
 
350
 
 
351
Valores por defecto para los argumentos segundo a quinto son:
 
352
 
 
353
@var{unk}: @code{@var{p}(@var{x})}, donde @var{p} es la primera funci@'on desconocida que Maxima encuentra en el integrando y @var{x} es la variable que act@'ua como argumento en la primera aparici@'on de @var{p} encontrada fuera de una integral en el caso de ecuaciones de segunda especie (@code{secondkind}), o es la @'unica variable aparte de la de integraci@'on en el caso de ecuaciones de primera especie (@code{firstkind}). Si el intento de encontrar @var{x} falla, el usuario ser@'a consultado para suministrar una variable independiente.
 
354
 
 
355
@c FALTAN AQUI ALGUNAS LINEAS
 
356
 
 
357
@end deffn
 
358
 
 
359
 
 
360
@defvr {Variable opcional} ieqnprint
 
361
Valor por defecto: @code{true}
 
362
 
 
363
La variable @code{ieqnprint} controla el comportamiento del resultado retornado por la instrucci@'on @code{ieqn}. Si @code{ieqnprint} vale @code{false}, la lista devuelta por la funci@'on @code{ieqn} tiene el formato
 
364
 
 
365
   [@var{soluci@'on}, @var{m@'etodo utilizado}, @var{nterms}, @var{variable}]
 
366
 
 
367
donde @var{variable} estar@'a ausente si la soluci@'on es exacta; en otro caso, ser@'a la palabra @code{approximate} o @code{incomplete} seg@'un que la soluci@'on sea inexacta o que no tenga forma expl@'{@dotless{i}}cita, respectivamente. Si se ha utilizado un m@'etodo basado en series, @var{nterms} es el n@'umero de t@'erminos utilizado, que puede ser menor que el @code{n} dado a @code{ieqn}.
 
368
 
 
369
@end defvr
 
370
 
 
371
@deffn {Funci@'on} lhs (@var{expr})
 
372
Devuelve el miembro izquierdo (es decir, el primer argumento)
 
373
de la expresi@'on @var{expr},
 
374
cuando el operador de @var{expr} es uno de los operadores
 
375
de relaci@'on @code{< <= = # equal notequal >= >},
 
376
o un operadores de asignaci@'on @code{:= ::= : ::},
 
377
o un operador infijo binario definido por el usuario mediante @code{infix}.
 
378
 
 
379
Si @var{expr} es un @'atomo o si su operador es diferente de los
 
380
citados m@'as arriba, @code{lhs} devuelve @var{expr}.
 
381
 
 
382
V@'ease tambi@'en @code{rhs}.
 
383
 
 
384
Ejemplo:
 
385
 
 
386
@c ===beg===
 
387
@c e: aa + bb = cc;
 
388
@c lhs (e);
 
389
@c rhs (e);
 
390
@c [lhs (aa < bb), lhs (aa <= bb), lhs (aa >= bb), lhs (aa > bb)];
 
391
@c [lhs (aa = bb), lhs (aa # bb), lhs (equal (aa, bb)), lhs (notequal (aa, bb))];
 
392
@c e1: '(foo(x) := 2*x);
 
393
@c e2: '(bar(y) ::= 3*y);
 
394
@c e3: '(x : y);
 
395
@c e4: '(x :: y);
 
396
@c [lhs (e1), lhs (e2), lhs (e3), lhs (e4)];
 
397
@c infix ("][");
 
398
@c lhs (aa ][ bb);
 
399
@c ===end===
 
400
@example
 
401
(%i1) e: aa + bb = cc;
 
402
(%o1)                     bb + aa = cc
 
403
(%i2) lhs (e);
 
404
(%o2)                        bb + aa
 
405
(%i3) rhs (e);
 
406
(%o3)                          cc
 
407
(%i4) [lhs (aa < bb), lhs (aa <= bb), lhs (aa >= bb), lhs (aa > bb)];
 
408
(%o4)                   [aa, aa, aa, aa]
 
409
(%i5) [lhs (aa = bb), lhs (aa # bb), lhs (equal (aa, bb)), lhs (notequal (aa, bb))];
 
410
(%o5)                   [aa, aa, aa, aa]
 
411
(%i6) e1: '(foo(x) := 2*x);
 
412
(%o6)                     foo(x) := 2 x
 
413
(%i7) e2: '(bar(y) ::= 3*y);
 
414
(%o7)                    bar(y) ::= 3 y
 
415
(%i8) e3: '(x : y);
 
416
(%o8)                         x : y
 
417
(%i9) e4: '(x :: y);
 
418
(%o9)                        x :: y
 
419
(%i10) [lhs (e1), lhs (e2), lhs (e3), lhs (e4)];
 
420
(%o10)               [foo(x), bar(y), x, x]
 
421
(%i11) infix ("][");
 
422
(%o11)                         ][
 
423
(%i12) lhs (aa ][ bb);
 
424
(%o12)                         aa
 
425
@end example
 
426
 
 
427
@end deffn
 
428
 
 
429
@deffn {Funci@'on} linsolve ([@var{expr_1}, ..., @var{expr_m}], [@var{x_1}, ..., @var{x_n}])
 
430
Resuelve la lista de ecuaciones lineales simult@'aneas para la lista de variables. Las expresiones deben ser polinomios lineales respecto de las variables o ecuaciones.
 
431
 
 
432
Si @code{globalsolve} vale @code{true},
 
433
a cada inc@'ognita se le asigna el valor de la soluci@'on encontrada.
 
434
 
 
435
Si @code{backsubst} vale @code{false}, @code{linsolve}
 
436
no hace la sustituci@'on tras la triangulariaci@'on de las ecuaciones. 
 
437
Esto puede ser necesario en problemas muy grandes en los que la
 
438
sustituci@'on puede dar lugar a la generaci@'on de expresiones
 
439
enormes.
 
440
 
 
441
Si @code{linsolve_params} vale @code{true}, @code{linsolve} tambi@'en genera s@'{@dotless{i}}mbolos @code{%r} para representar par@'ametros arbitrarios como los descritos para la funci@'on @code{algsys}. Si vale @code{false}, el resultado devuelto por @code{linsolve} expresar@'a, si es el sistema es indeterminado, unas variables en funci@'on de otras.
 
442
 
 
443
Si @code{programmode} vale @code{false},
 
444
@code{linsolve} muestra la soluci@'on con etiquetas de expresiones 
 
445
intermedias (@code{%t}) y devuelve las lista de etiquetas.
 
446
 
 
447
@c ===beg===
 
448
@c e1: x + z = y;
 
449
@c e2: 2*a*x - y = 2*a^2;
 
450
@c e3: y - 2*z = 2;
 
451
@c [globalsolve: false, programmode: true];
 
452
@c linsolve ([e1, e2, e3], [x, y, z]);
 
453
@c [globalsolve: false, programmode: false];
 
454
@c linsolve ([e1, e2, e3], [x, y, z]);
 
455
@c ''%;
 
456
@c [globalsolve: true, programmode: false];
 
457
@c linsolve ([e1, e2, e3], [x, y, z]);
 
458
@c ''%;
 
459
@c [x, y, z];
 
460
@c [globalsolve: true, programmode: true];
 
461
@c linsolve ([e1, e2, e3], '[x, y, z]);
 
462
@c [x, y, z];
 
463
@c ===end===
 
464
@example
 
465
(%i1) e1: x + z = y;
 
466
(%o1)                       z + x = y
 
467
(%i2) e2: 2*a*x - y = 2*a^2;
 
468
                                       2
 
469
(%o2)                   2 a x - y = 2 a
 
470
(%i3) e3: y - 2*z = 2;
 
471
(%o3)                      y - 2 z = 2
 
472
(%i4) [globalsolve: false, programmode: true];
 
473
(%o4)                     [false, true]
 
474
(%i5) linsolve ([e1, e2, e3], [x, y, z]);
 
475
(%o5)            [x = a + 1, y = 2 a, z = a - 1]
 
476
(%i6) [globalsolve: false, programmode: false];
 
477
(%o6)                    [false, false]
 
478
(%i7) linsolve ([e1, e2, e3], [x, y, z]);
 
479
Solution
 
480
 
 
481
(%t7)                       z = a - 1
 
482
 
 
483
(%t8)                        y = 2 a
 
484
 
 
485
(%t9)                       x = a + 1
 
486
(%o9)                    [%t7, %t8, %t9]
 
487
(%i9) ''%;
 
488
(%o9)            [z = a - 1, y = 2 a, x = a + 1]
 
489
(%i10) [globalsolve: true, programmode: false];
 
490
(%o10)                    [true, false]
 
491
(%i11) linsolve ([e1, e2, e3], [x, y, z]);
 
492
Solution
 
493
 
 
494
(%t11)                      z : a - 1
 
495
 
 
496
(%t12)                       y : 2 a
 
497
 
 
498
(%t13)                      x : a + 1
 
499
(%o13)                 [%t11, %t12, %t13]
 
500
(%i13) ''%;
 
501
(%o13)           [z : a - 1, y : 2 a, x : a + 1]
 
502
(%i14) [x, y, z];
 
503
(%o14)                 [a + 1, 2 a, a - 1]
 
504
(%i15) [globalsolve: true, programmode: true];
 
505
(%o15)                    [true, true]
 
506
(%i16) linsolve ([e1, e2, e3], '[x, y, z]);
 
507
(%o16)           [x : a + 1, y : 2 a, z : a - 1]
 
508
(%i17) [x, y, z];
 
509
(%o17)                 [a + 1, 2 a, a - 1]
 
510
@end example
 
511
 
 
512
@end deffn
 
513
 
 
514
@defvr {Variable opcional} linsolvewarn
 
515
Valor por defecto: @code{true}
 
516
 
 
517
Si @code{linsolvewarn} vale @code{true}, @code{linsolve} mostrar@'a el mensaje: "Dependent equations eliminated".
 
518
 
 
519
@end defvr
 
520
 
 
521
@defvr {Variable opcional} linsolve_params
 
522
Valor por defecto: @code{true}
 
523
 
 
524
Si @code{linsolve_params} vale @code{true}, @code{linsolve} tambi@'en genera s@'{@dotless{i}}mbolos @code{%r} para representar par@'ametros arbitrarios como los descritos para la funci@'on @code{algsys}. Si vale @code{false}, el resultado devuelto por @code{linsolve} expresar@'a, si es el sistema es indeterminado, unas variables en funci@'on de otras.
 
525
 
 
526
@end defvr
 
527
 
 
528
@defvr {System variable} multiplicities
 
529
Valor por defecto: @code{not_set_yet}
 
530
 
 
531
La variable @code{multiplicities} es una con las multiplicidades de las soluciones encontradas por @code{solve} o
 
532
@code{realroots}.
 
533
@c NEED AN EXAMPLE HERE
 
534
 
 
535
@end defvr
 
536
 
 
537
@deffn {Funci@'on} nroots (@var{p}, @var{low}, @var{high})
 
538
Devuelve el n@'umero de ra@'{@dotless{i}}ces reales del polinomio real univariante @var{p} en el intervalo semiabierto
 
539
@code{(@var{low}, @var{high}]}. Los extremos del intervalo pueden ser @code{minf} o @code{inf}, menos y m@'as infinito.
 
540
 
 
541
La funci@'on @code{nroots} utiliza el m@'etodo de las secuencias de Sturm.
 
542
 
 
543
@example
 
544
(%i1) p: x^10 - 2*x^4 + 1/2$
 
545
(%i2) nroots (p, -6, 9.1);
 
546
(%o2)                           4
 
547
@end example
 
548
 
 
549
@end deffn
 
550
 
 
551
@deffn {Funci@'on} nthroot (@var{p}, @var{n})
 
552
 
 
553
Siendo @code{p} un polinomio de coeficientes enteros y @code{n} un entero positivo, @code{nthroot} devuelve un polinomio @code{q}, tambi@'en de coeficientes enteros, tal que @code{q^n=p}, o un mensaje de error indicando que @code{p} no es una @code{n}-potencia exacta. Esta funci@'on es bastante m@'as r@'apida que @code{factor} y que @code{sqfr}.
 
554
 
 
555
@end deffn
 
556
 
 
557
@defvr {Variable opcional} programmode
 
558
Valor por defecto: @code{true}
 
559
 
 
560
Si @code{programmode} vale @code{true}, @code{solve}, @code{realroots}, @code{allroots} y @code{linsolve}
 
561
devuelve sus soluciones como elementos de una lista. @c FALTAN AQUI ALGUNAS FRASES
 
562
 
 
563
Si @code{programmode} vale @code{false}, @code{solve} y las dem@'as crean expresiones intermedias etiquetadas @code{%t1}, @code{t2}, etc., y les asinan las soluciones.
 
564
 
 
565
@example
 
566
(%i1) solve(x^2+x+1);
 
567
                    sqrt(3) %i + 1      sqrt(3) %i - 1
 
568
(%o1)        [x = - --------------, x = --------------]
 
569
                          2                   2
 
570
(%i2) programmode:false$
 
571
(%i3) solve(x^2+x+1);
 
572
Solution:
 
573
 
 
574
                              sqrt(3) %i + 1
 
575
(%t3)                   x = - --------------
 
576
                                    2
 
577
 
 
578
                             sqrt(3) %i - 1
 
579
(%t4)                    x = --------------
 
580
                                   2
 
581
(%o4)                        [%t4, %t5]
 
582
@end example
 
583
 
 
584
@end defvr
 
585
 
 
586
@defvr {Variable opcional} realonly
 
587
Valor por defecto: @code{false}
 
588
 
 
589
Si @code{realonly} vale @code{true}, @code{algsys} s@'olo devuelve aquellas soluciones exentas de la constante @code{%i}.
 
590
 
 
591
@end defvr
 
592
 
 
593
@deffn {Funci@'on} realroots (@var{poly}, @var{bound})
 
594
Encuentra todas las ra@'{@dotless{i}}ces reales del polinomio real univariante con la tolerancia especificada por @code{bound}, que si es menor que 1, hace que se busquen las ra@'{@dotless{i}}ces enteras de forma exacta. El argumento @code{bound} puede ser arbitrariamente peque@~no a fin de conseguir la precisi@'on deseada. El primer argumento tambi@'en puede ser una ecuaci@'on. La funci@'on @code{realroots} asigna un valor a @code{multiplicities}, @'util en caso de ra@'{@dotless{i}}ces m@'ultiples. La llamada @code{realroots (@var{p})} equivale a @code{realroots (@var{p}, rootsepsilon)}. La variable @code{rootsepsilon} es un n@'umeroreal que establece los intervalos de confianza para las ra@'{@dotless{i}}ces. H@'agase @code{example (realroots)} para ver un ejemplo.
 
595
 
 
596
@end deffn
 
597
 
 
598
@deffn {Funci@'on} rhs (@var{expr})
 
599
Devuelve el miembro derecho (es decir, el segundo argumento)
 
600
de la expresi@'on @var{expr},
 
601
cuando el operador de @var{expr} es uno de los operadores
 
602
de relaci@'on @code{< <= = # equal notequal >= >},
 
603
o un operadores de asignaci@'on @code{:= ::= : ::},
 
604
o un operador infijo binario definido por el usuario mediante @code{infix}.
 
605
 
 
606
Si @var{expr} es un @'atomo o si su operador es diferente de los
 
607
citados m@'as arriba, @code{rhs} devuelve @var{expr}.
 
608
 
 
609
V@'ease tambi@'en @code{lhs}.
 
610
 
 
611
Ejemplo:
 
612
 
 
613
@c ===beg===
 
614
@c e: aa + bb = cc;
 
615
@c lhs (e);
 
616
@c rhs (e);
 
617
@c [rhs (aa < bb), rhs (aa <= bb), rhs (aa >= bb), rhs (aa > bb)];
 
618
@c [rhs (aa = bb), rhs (aa # bb), rhs (equal (aa, bb)), rhs (notequal (aa, bb))];
 
619
@c e1: '(foo(x) := 2*x);
 
620
@c e2: '(bar(y) ::= 3*y);
 
621
@c e3: '(x : y);
 
622
@c e4: '(x :: y);
 
623
@c [rhs (e1), rhs (e2), rhs (e3), rhs (e4)];
 
624
@c infix ("][");
 
625
@c rhs (aa ][ bb);
 
626
@c ===end===
 
627
@example
 
628
(%i1) e: aa + bb = cc;
 
629
(%o1)                     bb + aa = cc
 
630
(%i2) lhs (e);
 
631
(%o2)                        bb + aa
 
632
(%i3) rhs (e);
 
633
(%o3)                          cc
 
634
(%i4) [rhs (aa < bb), rhs (aa <= bb), rhs (aa >= bb), rhs (aa > bb)];
 
635
(%o4)                   [bb, bb, bb, bb]
 
636
(%i5) [rhs (aa = bb), rhs (aa # bb), rhs (equal (aa, bb)), rhs (notequal (aa, bb))];
 
637
(%o5)                   [bb, bb, bb, bb]
 
638
(%i6) e1: '(foo(x) := 2*x);
 
639
(%o6)                     foo(x) := 2 x
 
640
(%i7) e2: '(bar(y) ::= 3*y);
 
641
(%o7)                    bar(y) ::= 3 y
 
642
(%i8) e3: '(x : y);
 
643
(%o8)                         x : y
 
644
(%i9) e4: '(x :: y);
 
645
(%o9)                        x :: y
 
646
(%i10) [rhs (e1), rhs (e2), rhs (e3), rhs (e4)];
 
647
(%o10)                  [2 x, 3 y, y, y]
 
648
(%i11) infix ("][");
 
649
(%o11)                         ][
 
650
(%i12) rhs (aa ][ bb);
 
651
(%o12)                         bb
 
652
@end example
 
653
 
 
654
@end deffn
 
655
 
 
656
@defvr {Variable opcional} rootsconmode
 
657
Valor por defecto: @code{true}
 
658
 
 
659
La variable @code{rootsconmode} controla el comportamiento de la instrucci@'on @code{rootscontract}.  V@'ease @code{rootscontract} para m@'as detalles.
 
660
 
 
661
@end defvr
 
662
 
 
663
@deffn {Funci@'on} rootscontract (@var{expr})
 
664
Convierte productos de ra@'{@dotless{i}}ces en ra@'{@dotless{i}}ces de productos. Por ejemplo, @code{rootscontract (sqrt(x)*y^(3/2))} devuelve @code{sqrt(x*y^3)}.
 
665
 
 
666
Si @code{radexpand} vale @code{true} y @code{domain} vale @code{real},
 
667
@code{rootscontract} convierte @code{abs} en @code{sqrt}, por ejemplo,
 
668
@code{rootscontract (abs(x)*sqrt(y))} devuelve @code{sqrt(x^2*y)}.
 
669
 
 
670
La opci@'on @code{rootsconmode} afecta el resultado de @code{rootscontract} como sigue:
 
671
 
 
672
@example
 
673
Problema            Valor de         Resultadod de
 
674
                  rootsconmode        rootscontract
 
675
      
 
676
x^(1/2)*y^(3/2)      false          (x*y^3)^(1/2)
 
677
x^(1/2)*y^(1/4)      false          x^(1/2)*y^(1/4)
 
678
x^(1/2)*y^(1/4)      true           (x*y^(1/2))^(1/2)
 
679
x^(1/2)*y^(1/3)      true           x^(1/2)*y^(1/3)
 
680
x^(1/2)*y^(1/4)      all            (x^2*y)^(1/4)
 
681
x^(1/2)*y^(1/3)      all            (x^3*y^2)^(1/6)
 
682
@end example
 
683
 
 
684
Si @code{rootsconmode} vale @code{false}, @code{rootscontract} contrae s@'olamente respecto de exponentes racionales cuyos denominadores sean iguales. La clave para los ejemplos @code{rootsconmode: true} es simplemente que 2 divide a 4 pero no a 3. La asignaci@'on @code{rootsconmode: all} hace que se calcule el m@'{@dotless{i}}nimo com@'un m@'ultiplo de los denominadores de los exponentes.
 
685
 
 
686
La funci@'on @code{rootscontract} utiliza @code{ratsimp} de forma similar a como lo hace @code{logcontract}.
 
687
 
 
688
Ejemplos:
 
689
@c FOLLOWING ADAPTED FROM example (rootscontract)
 
690
@c rootsconmode: false$
 
691
@c rootscontract (x^(1/2)*y^(3/2));
 
692
@c rootscontract (x^(1/2)*y^(1/4));
 
693
@c rootsconmode: true$
 
694
@c rootscontract (x^(1/2)*y^(1/4));
 
695
@c rootscontract (x^(1/2)*y^(1/3));
 
696
@c rootsconmode: all$
 
697
@c rootscontract (x^(1/2)*y^(1/4));
 
698
@c rootscontract (x^(1/2)*y^(1/3));
 
699
@c rootsconmode: false$
 
700
@c rootscontract (sqrt(sqrt(x) + sqrt(1 + x))
 
701
@c                     *sqrt(sqrt(1 + x) - sqrt(x)));
 
702
@c rootsconmode: true$
 
703
@c rootscontract (sqrt(5 + sqrt(5)) - 5^(1/4)*sqrt(1 + sqrt(5)));
 
704
 
 
705
@example
 
706
(%i1) rootsconmode: false$
 
707
(%i2) rootscontract (x^(1/2)*y^(3/2));
 
708
                                   3
 
709
(%o2)                      sqrt(x y )
 
710
(%i3) rootscontract (x^(1/2)*y^(1/4));
 
711
                                   1/4
 
712
(%o3)                     sqrt(x) y
 
713
(%i4) rootsconmode: true$
 
714
(%i5) rootscontract (x^(1/2)*y^(1/4));
 
715
(%o5)                    sqrt(x sqrt(y))
 
716
(%i6) rootscontract (x^(1/2)*y^(1/3));
 
717
                                   1/3
 
718
(%o6)                     sqrt(x) y
 
719
(%i7) rootsconmode: all$
 
720
(%i8) rootscontract (x^(1/2)*y^(1/4));
 
721
                              2   1/4
 
722
(%o8)                       (x  y)
 
723
(%i9) rootscontract (x^(1/2)*y^(1/3));
 
724
                             3  2 1/6
 
725
(%o9)                      (x  y )
 
726
(%i10) rootsconmode: false$
 
727
(%i11) rootscontract (sqrt(sqrt(x) + sqrt(1 + x))
 
728
                    *sqrt(sqrt(1 + x) - sqrt(x)));
 
729
(%o11)                          1
 
730
(%i12) rootsconmode: true$
 
731
(%i13) rootscontract (sqrt(5 + sqrt(5)) - 5^(1/4)*sqrt(1 + sqrt(5)));
 
732
(%o13)                          0
 
733
@end example
 
734
 
 
735
@end deffn
 
736
 
 
737
@defvr {Variable opcional} rootsepsilon
 
738
Valor por defecto: 1.0e-7
 
739
 
 
740
La variable @code{rootsepsilon} es la tolerancia que establece el intervalo de confianza para las ra@'{@dotless{i}}ces calculadas por la funci@'on @code{realroots}.
 
741
@c IS IT GUARANTEED THAT |ACTUAL - ESTIMATE| < rootepsilon OR IS IT SOME OTHER NOTION ??
 
742
@c NEED EXAMPLE HERE
 
743
 
 
744
@end defvr
 
745
 
 
746
@deffn {Funci@'on} solve (@var{expr}, @var{x})
 
747
@deffnx {Funci@'on} solve (@var{expr})
 
748
@deffnx {Funci@'on} solve ([@var{eqn_1}, ..., @var{eqn_n}], [@var{x_1}, ..., @var{x_n}])
 
749
 
 
750
Resuelve la ecuaci@'on algebraica @var{expr} de inc@'ognita @var{x} y devuelve una lista de igualdades con la @var{x} despejada.  Si @var{expr} no es una igualdad, se supone que se quiere resolver la ecuaci@'on @code{@var{expr} = 0}.
 
751
El argumento @var{x} puede ser una funci@'on (por ejemplo, @code{f(x)}), u otra expresi@'on no at@'omica, excepto una suma o producto. Puede omitirse @var{x} si @var{expr} contiene solamente una variable. El argumento @var{expr} puede ser una expresi@'on racional y puede contener funciones trigonom@'etricas, exponenciales, etc.
 
752
 
 
753
Se utiliza el siguiente m@'etodo de resoluci@'on:
 
754
 
 
755
Sea @var{E} la expresi@'on y @var{X} la inc@'ognita. Si @var{E} es lineal respecto de @var{X} entonces @var{X} se resuelve de forma trivial. En caso contrario, si @var{E} es de la forma @code{A*X^N + B} entonces el resultado es @code{(-B/A)^1/N)} multiplicado por las @code{N}-@'esimas ra@'{@dotless{i}}ces de la unidad.
 
756
 
 
757
Si @var{E} no es lineal respecto de @var{X} entonces el m@'aximo com@'un divisor de los exponentes de @var{X} en @var{E} (sup@'ongase que es @var{N}) se divide entre los exponentes y la multiplicidad de las ra@'{@dotless{i}}ces se multiplica por @var{N}.  Entonces es llamado recursivamente @code{solve} para este resultado. Si @var{E} es factorizable entonces @code{solve} es invocado para cada uno de los factores.  Finalmente, @code{solve} usar@'a, seg@'un sea necesario, las f@'ormulas cuadr@'atica, c@'ubica o cu@'artica.
 
758
 
 
759
En caso de que @var{E} sea un polinomio respecto de una funci@'on de la inc@'ognita, por ejemplo @code{F(X)}, entonces se calcula primero para  @code{F(X)} (sea @var{C} el resultado obtenido), entonces la ecuaci@'on @code{F(X)=C} se resuelve para @var{X} en el supuesto que se conozca la inversa de la funci@'on @var{F}.
 
760
 
 
761
Si la variable @code{breakup} vale @code{false} har@'a que @code{solve} muestre las soluciones de las ecuaciones c@'ubicas o cu@'articas como expresiones @'unicas, en lugar de utilizar varias subexpresiones comunes, que es el formato por defecto.
 
762
 
 
763
A la variable @code{multiplicities} se le asignar@'a una lista con las multiplicidades de las soluciones individuales devueltas por @code{solve}, @code{realroots} o @code{allroots}. La instrucci@'on @code{apropos (solve)} har@'a que se muestren las variables optativas que de alg@'un modo afectan al comportamiento de @code{solve}. Se podr@'a luego utilizar la funci@'on  @code{describe} para aquellas variables cuyo objeto no est@'e claro.
 
764
 
 
765
La llamada @code{solve ([@var{eqn_1}, ..., @var{eqn_n}], [@var{x_1}, ..., @var{x_n}])}
 
766
resuelve un sistema de ecuaciones polin@'omicas simult@'aneas (lineales o no) llamando a @code{linsolve} o @code{algsys} y devuelve una lista de listas con soluciones para las inc@'ognitas. En caso de haberse llamado a @code{linsolve} esta lista contendr@'a una @'unica lista de soluciones. La llamada a @code{solve} tiene dos listas como argumentos. La primera lista tiene las ecuaciones a resolver y la segunda son las inc@'ognitas cuyos valores se quieren calcular. Si el n@'umero de variables en las ecuaciones es igual al n@'umero de inc@'ognitas, el segundo argumento puede omitirse. En caso de sistemas lineales incompatibles se mostrar@'a el mensaje @code{inconsistent} (v@'ease la variable @code{solve_inconsistent_error}); si no existe una @'unica soluci@'on, se mostrar@'a el mensaje @code{singular}.
 
767
 
 
768
Si @code{programmode} vale @code{false},
 
769
@code{solve} muestra la soluci@'on con etiquetas de expresiones 
 
770
intermedias (@code{%t}) y devuelve las lista de etiquetas.
 
771
 
 
772
 
 
773
Si @code{globalsolve} vale @code{true} y el problema consiste en resolver un sistema de dos o m@'as ecuaciones lineales, a cada inc@'ognita se le asigna el valor encontrado en la resoluci@'on del sistema.
 
774
 
 
775
Ejemplos:
 
776
@c FOLLOWING ADAPTED FROM example (solve)
 
777
@c ===beg===
 
778
@c solve (asin (cos (3*x))*(f(x) - 1), x);
 
779
@c ev (solve (5^f(x) = 125, f(x)), solveradcan);
 
780
@c [4*x^2 - y^2 = 12, x*y - x = 2];
 
781
@c solve (%, [x, y]);
 
782
@c solve (1 + a*x + x^3, x);
 
783
@c solve (x^3 - 1);
 
784
@c solve (x^6 - 1);
 
785
@c ev (x^6 - 1, %[1]);
 
786
@c expand (%);
 
787
@c x^2 - 1;
 
788
@c solve (%, x);
 
789
@c ev (%th(2), %[1]);
 
790
@c ===end===
 
791
@example
 
792
(%i1) solve (asin (cos (3*x))*(f(x) - 1), x);
 
793
 
 
794
SOLVE is using arc-trig functions to get a solution.
 
795
Some solutions will be lost.
 
796
                            %pi
 
797
(%o1)                  [x = ---, f(x) = 1]
 
798
                             6
 
799
(%i2) ev (solve (5^f(x) = 125, f(x)), solveradcan);
 
800
                                log(125)
 
801
(%o2)                   [f(x) = --------]
 
802
                                 log(5)
 
803
(%i3) [4*x^2 - y^2 = 12, x*y - x = 2];
 
804
                      2    2
 
805
(%o3)             [4 x  - y  = 12, x y - x = 2]
 
806
(%i4) solve (%, [x, y]);
 
807
(%o4) [[x = 2, y = 2], [x = .5202594388652008 %i
 
808
 
 
809
 - .1331240357358706, y = .0767837852378778
 
810
 
 
811
 - 3.608003221870287 %i], [x = - .5202594388652008 %i
 
812
 
 
813
 - .1331240357358706, y = 3.608003221870287 %i
 
814
 
 
815
 + .0767837852378778], [x = - 1.733751846381093, 
 
816
 
 
817
y = - .1535675710019696]]
 
818
(%i5) solve (1 + a*x + x^3, x);
 
819
                                       3
 
820
              sqrt(3) %i   1   sqrt(4 a  + 27)   1 1/3
 
821
(%o5) [x = (- ---------- - -) (--------------- - -)
 
822
                  2        2      6 sqrt(3)      2
 
823
 
 
824
        sqrt(3) %i   1
 
825
       (---------- - -) a
 
826
            2        2
 
827
 - --------------------------, x = 
 
828
              3
 
829
      sqrt(4 a  + 27)   1 1/3
 
830
   3 (--------------- - -)
 
831
         6 sqrt(3)      2
 
832
 
 
833
                          3
 
834
 sqrt(3) %i   1   sqrt(4 a  + 27)   1 1/3
 
835
(---------- - -) (--------------- - -)
 
836
     2        2      6 sqrt(3)      2
 
837
 
 
838
         sqrt(3) %i   1
 
839
      (- ---------- - -) a
 
840
             2        2
 
841
 - --------------------------, x = 
 
842
              3
 
843
      sqrt(4 a  + 27)   1 1/3
 
844
   3 (--------------- - -)
 
845
         6 sqrt(3)      2
 
846
 
 
847
         3
 
848
 sqrt(4 a  + 27)   1 1/3               a
 
849
(--------------- - -)    - --------------------------]
 
850
    6 sqrt(3)      2                  3
 
851
                              sqrt(4 a  + 27)   1 1/3
 
852
                           3 (--------------- - -)
 
853
                                 6 sqrt(3)      2
 
854
(%i6) solve (x^3 - 1);
 
855
             sqrt(3) %i - 1        sqrt(3) %i + 1
 
856
(%o6)   [x = --------------, x = - --------------, x = 1]
 
857
                   2                     2
 
858
(%i7) solve (x^6 - 1);
 
859
           sqrt(3) %i + 1      sqrt(3) %i - 1
 
860
(%o7) [x = --------------, x = --------------, x = - 1, 
 
861
                 2                   2
 
862
 
 
863
                     sqrt(3) %i + 1        sqrt(3) %i - 1
 
864
               x = - --------------, x = - --------------, x = 1]
 
865
                           2                     2
 
866
(%i8) ev (x^6 - 1, %[1]);
 
867
                                      6
 
868
                      (sqrt(3) %i + 1)
 
869
(%o8)                 ----------------- - 1
 
870
                             64
 
871
(%i9) expand (%);
 
872
(%o9)                           0
 
873
(%i10) x^2 - 1;
 
874
                              2
 
875
(%o10)                       x  - 1
 
876
(%i11) solve (%, x);
 
877
(%o11)                  [x = - 1, x = 1]
 
878
(%i12) ev (%th(2), %[1]);
 
879
(%o12)                          0
 
880
@end example
 
881
 
 
882
@end deffn
 
883
 
 
884
@defvr {Variable opcional} solvedecomposes
 
885
Valor por defecto: @code{true}
 
886
 
 
887
Si @code{solvedecomposes} vale @code{true}, @code{solve} llama a @code{polydecomp} en caso de que se le pida resolver ecuaciones polin@'omicas.
 
888
@c OTHERWISE WHAT HAPPENS -- CAN'T SOLVE POLYNOMIALS, OR SOME OTHER METHOD IS USED ??
 
889
 
 
890
@end defvr
 
891
 
 
892
@defvr {Variable opcional} solveexplicit
 
893
Valor por defecto: @code{false}
 
894
 
 
895
Si @code{solveexplicit} vale @code{true}, le inhibe a @code{solve} devolver soluciones impl@'{@dotless{i}}citas, esto es, soluciones de la forma @code{F(x) = 0}, donde @code{F} es cierta funci@'on.
 
896
@c NEED AN EXAMPLE HERE
 
897
 
 
898
@end defvr
 
899
 
 
900
@defvr {Variable opcional} solvefactors
 
901
Valor por defecto: @code{true}
 
902
 
 
903
@c WHAT IS THIS ABOUT EXACTLY ??
 
904
Si @code{solvefactors} vale @code{false}, @code{solve} no intenta factorizar la expresi@'on.  Este valor @code{false} puede ser @'util en algunos casos en los que la factorizaci@'on no es necesaria.
 
905
@c NEED AN EXAMPLE HERE
 
906
 
 
907
@end defvr
 
908
 
 
909
@defvr {Variable opcional} solvenullwarn
 
910
Valor por defecto: @code{true}
 
911
 
 
912
Si @code{solvenullwarn} vale @code{true},  @code{solve} muestra un mensaje de aviso si es llamado con una lista de ecuaciones vac@'{@dotless{i}}a o con una lista de inc@'ognitas vac@'{@dotless{i}}a. Por ejemplo, @code{solve ([], [])} imprimir@'a dos mensajes de aviso y devolver@'a @code{[]}.
 
913
 
 
914
@end defvr
 
915
 
 
916
@defvr {Variable opcional} solveradcan
 
917
Valor por defecto: @code{false}
 
918
 
 
919
Si @code{solveradcan} vale @code{true}, @code{solve} llama a @code{radcan}, lo que har@'a que @code{solve} se ejecute de forma m@'as lenta, pero permitir@'a que se resuelvan ciertas ecuaciones que contengan exponenciales y logaritmos.
 
920
@c NEED AN EXAMPLE HERE
 
921
 
 
922
@end defvr
 
923
 
 
924
@defvr {Variable opcional} solvetrigwarn
 
925
Valor por defecto: @code{true}
 
926
 
 
927
@c MAYBE THIS CAN BE CLARIFIED
 
928
Si @code{solvetrigwarn} vale @code{true}, @code{solve} puede presentar un mensaje diciendo que est@'a utilizando funciones trigonom@'etricas inversas para resolver la ecuaci@'on, y que por lo tanto puede estar ignorando algunas soluciones.
 
929
@c NEED AN EXAMPLE HERE
 
930
 
 
931
@end defvr
 
932
 
 
933
@defvr {Variable opcional} solve_inconsistent_error
 
934
Valor por defecto: @code{true}
 
935
 
 
936
Si @code{solve_inconsistent_error} vale @code{true}, @code{solve} y
 
937
@code{linsolve} devuelven un error si las ecuaciones a resolver son incompatibles. Si vale @code{false}, @code{solve} y @code{linsolve} devuelven la lista vac@'{@dotless{i}}a @code{[]} en caso de incompatibilidad.
 
938
 
 
939
Ejemplo:
 
940
 
 
941
@example
 
942
(%i1) solve_inconsistent_error: true$
 
943
(%i2) solve ([a + b = 1, a + b = 2], [a, b]);
 
944
Inconsistent equations:  (2)
 
945
 -- an error.  Quitting.  To debug this try debugmode(true);
 
946
(%i3) solve_inconsistent_error: false$
 
947
(%i4) solve ([a + b = 1, a + b = 2], [a, b]);
 
948
(%o4)                          []
 
949
@end example
 
950
 
 
951
@end defvr