Merge branch 'rtoy-wrap-option-args'
[maxima.git] / doc / info / de / Polynomials.de.texi
blob0c3f35103b17f5a5a7ef2add7e6d8996786859fd
1 @c -----------------------------------------------------------------------------
2 @c File        : Polynomials.de.texi
3 @c License     : GNU General Public License (GPL)
4 @c Language    : German
5 @c Original    : Polynomials.texi revision 03.07.2011
6 @c Translation : Dr. Dieter Kaiser
7 @c Date        : 11.12.2010
8 @c Revision    : 27.11.2011
9 @c 
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
13 @menu
14 * Einf@"uhrung in Polynome::
15 * Funktionen und Variablen f@"ur Polynome::
16 @end menu
18 @c -----------------------------------------------------------------------------
19 @node Einf@"uhrung in Polynome, Funktionen und Variablen f@"ur Polynome, Polynome, Polynome
20 @section Einf@"uhrung in Polynome
21 @c -----------------------------------------------------------------------------
23 Polynome werden in einer allgemeinen Darstellung oder in einer kanonischen
24 Darstellung (CRE - Cannonical Rational Expressions) gespeichert.  Die 
25 CRE-Darstellung ist die Standardform f@"ur Operationen mit Polynomen und wird
26 intern von Funktionen wie @mref{factor} oder @mref{ratsimp} verwendet.
28 Ausdr@"ucke in einer CRE-Form sind besonders f@"ur die Darstellung von Polynomen
29 und rationalen Funktionen geeignet.  Die CRE-Form nimmt eine Ordnung der
30 Variablen an.  Polynome werden rekursiv als eine Liste definiert, die als
31 ersten Eintrag den Namen der Variablen und als n@"achste Eintr@"age die 
32 Exponenten und Koeffizienten der Variablen enthalten.  Der Koeffizient kann
33 eine Zahl oder wiederum ein Polynom sein.  Zum Beispiel hat das Polynom
34 @code{3*x^2-1} die Darstellung @code{(X 2 3 0 -1)} und das Polynom 
35 @code{2*x*y+x-3} die Darstellung @code{(Y 1 (X 1 2) 0 (X 1 1 0 -3))}, wenn 
36 @code{y} die Hauptvariable des Polynoms ist.  Ist @var{x} die Hauptvariable des
37 Polynoms, dann ist die Darstellung @code{(X 1 (Y 1 2 0 1) 0 -3)}.
39 Die Ordnung der Variablen ist in der Regel umgekehrt alphabetisch.  Die
40 Variablen m@"ussen keine Atome sein.  Alle Ausdr@"ucke, die nicht die Operatoren
41 @code{+}, @code{-}, @code{*}, @code{/} oder @code{^} enthalten, werden in einer
42 CRE-Darstellung als "Variable" angenommen.  Zum Beispiel sind @code{x}, 
43 @code{sqrt(x)} und @code{sin(x+1)} die CRE-Variablen des Ausdrucks
44 @code{x+sin(x+1)+2*SQRT(x)+1}.  Wird vom Nutzer keine abweichende Ordnung der 
45 Variablen mit der Funktion @mref{ratvars} definiert, nimmt Maxima eine 
46 alphabetische Ordnung der Variablen an.
48 Im Allgemeinen werden rationale Funktionen in einer CRE-Form dargestellt, die
49 keinen gemeinsamen Faktor im Z@"ahler und Nenner haben.  Die interne Darstellung
50 ist ein Paar von Polynomen, die jeweils den Z@"ahler und den Nenner darstellen.
51 Diesem Paar geht eine Liste mit der Ordnung der Variablen im Ausdruck voraus.
52 Ein Ausdruck in einer CRE-Form oder der CRE-Formen enth@"alt, wird in der 
53 Ausgabe mit dem Symbol @code{/R/} gekennzeichnet.  Mit der Funktion
54 @mref{rat} k@"onnen allgemeine Ausdr@"ucke in eine CRE-Form transformiert
55 werden.  Umgekehrt wird ein Ausdruck in einer CRE-Form mit der Funktion
56 @mref{ratdisrep} in eine allgemeine Form transformiert.
58 F@"ur die Darstellung von Taylor-Polynomen der Funktion @mref{taylor} wird eine
59 erweiterte CRE-Form verwendet.  In dieser Darstellung k@"onnen die Exponenten
60 von Polynomen auch rationale Zahlen sein.  Weiterhin k@"onnen die Koeffizienten
61 rationale Funktionen sein.  Die erweiterte CRE-Form enth@"alt auch Informationen
62 @"uber den Grad des Polynoms.  In der Ausgabe wird die erweiterte CRE-Form mit
63 dem Symbol @code{/T/} bezeichnet.
65 @c -----------------------------------------------------------------------------
66 @node Funktionen und Variablen f@"ur Polynome,  , Einf@"uhrung in Polynome, Polynome
67 @section Funktionen und Variablen f@"ur Polynome
68 @c -----------------------------------------------------------------------------
70 @c --- 27.11.2011 DK -----------------------------------------------------------
71 @anchor{algebraic}
72 @defvr {Optionsvariable} algebraic
73 Standardwert: @code{false}
75 Hat die Optionsvariable @code{algebraic} den Wert @code{true}, wird beim
76 Umwandeln von Ausdr@"ucken in die CRE-Form und beim Rechnen mit Ausdr@"ucken
77 in einer CRE-Form der Ausdruck so vereinfacht, dass der Nenner frei von
78 algebraischen Zahlen (das sind Wurzeln von ganzen Zahlen) ist.
80 @need 800
81 Beispiele:
83 Im zweiten Beispiel wird der Ausdruck automatisch mit @code{sqrt(2)} erweitert,
84 um den Nenner frei von der algebraischen Zahl @code{sqrt(2)} zu machen.
86 @example
87 (%i1) algebraic:false;
88 (%o1)                         false
89 (%i2) rat(x^2+x)/sqrt(2);
90                               2
91                              x  + x
92 (%o2)/R/                     -------
93                              sqrt(2)
94 (%i3) algebraic:true;
95 (%o3)                         true
96 (%i4) rat(x^2+x)/sqrt(2);
97                               2
98                      sqrt(2) x  + sqrt(2) x
99 (%o4)/R/             ----------------------
100                                2
101 @end example
102 @end defvr
104 @c --- 27.11.2011 DK -----------------------------------------------------------
105 @anchor{berlefact}
106 @defvr {Optionsvariable} berlefact
107 Standardwert: @code{true}
109 Hat die Optionsvariable @code{berlefact} den Wert @code{false}, dann wird der
110 Kronecker-Al@-go@-rith@-mus von der Funktion @mref{factor} f@"ur die
111 Faktorisierung genutzt.  Ansonsten wird der Berlekamp-Algorithmus genutzt.  Der
112 Standardwert ist @code{true}.
113 @end defvr
115 @c --- 19.02.2011 DK -----------------------------------------------------------
116 @anchor{bezout}
117 @deffn {Funktion} bezout (@var{p1}, @var{p2}, @var{x})
119 Die R@"uckgabe ist die Sylvestermatrix der zwei Polynome @var{p1} und @var{p2}
120 mit der unabh@"angigen Variablen @var{x}.  Die Determinante der Sylvestermatrix
121 ist die Resultante der Polynome.  Die Resultante kann auch sofort mit der
122 Funktion @mref{resultant} berechnet werden.
124 Beispiele:
126 @example
127 (%i1) bezout(a*x+b, c*x^2+d, x);
128                          [ b c  - a d ]
129 (%o1)                    [            ]
130                          [  a     b   ]
131 (%i2) determinant(%);
132                             2      2
133 (%o2)                      a  d + b  c
134 (%i3) resultant(a*x+b, c*x^2+d, x);
135                             2      2
136 (%o3)                      a  d + b  c
137 @end example
138 @end deffn
140 @c --- 19.02.2011 DK -----------------------------------------------------------
141 @anchor{bothcoef}
142 @deffn {Funktion} bothcoef (@var{expr}, @var{x})
144 Gibt eine Liste zur@"uck, deren erstes Element der Koeffizient der Variablen
145 @var{x} im Ausdruck @var{expr} und deren zweites Element der verbleibende
146 Teil des Ausdrucks @var{expr} ist.  Das Ergebnis ist also @code{[A,B]} und es
147 gilt @code{@var{expr} = A * @var{x} + B}.
149 Die Funktion @code{bothcoef} hat den Alias-Namen @code{bothcoeff}.
151 Siehe auch die Funktion @mrefdot{coeff}
153 Beispiele:
155 @example
156 (%i1) bothcoeff(a*x+2, x);
157 (%o1)                        [a, 2]
158 (%i2) bothcoeff(x^2+a*x+2, x);
159                                 2
160 (%o2)                      [a, x  + 2]
161 @end example
163 Definition einer Funktion @code{islinear}, die die Funktion @code{bothcoeff}
164 nutzt, um den linearen Anteil eines Ausdrucks zu ermitteln.
166 @example
167 (%i1) islinear (expr, x) := 
168          block ([c],
169             c: bothcoef (rat (expr, x), x),
170             is (freeof (x, c) and c[1] # 0))$
171 (%i2) islinear ((r^2 - (x - r)^2)/x, x);
172 (%o2)                         true
173 @end example
174 @end deffn
176 @c --- 27.07.2013 VvN ----------------------------------------------------------
177 @anchor{coeff}
178 @deffn  {Funktion} coeff (@var{expr}, @var{x}, @var{n})
179 @deffnx {Funktion} coeff (@var{expr}, @var{x})
181 Gibt den Koeffizienten von @code{@var{x}^@var{n}} des Ausdrucks @var{expr}
182 zur@"uck.  Das Argument @var{expr} ist ein Polynom in der Variablen @var{x}.
184 Das Kommando @code{coeff(@var{expr}, @var{x}^@var{n})} ist @"aquivalent zu
185 @code{coeff(@var{expr}, @var{x}, @var{n})}.  Das Kommando
186 @code{coeff(@var{expr}, @var{x}, 0)} gibt den Teil des Ausdrucks @var{expr}
187 zur@"uck, der frei von der Variablen @var{x} ist.  Wenn nicht angegeben, wird
188 das Argument @var{n} als @code{1} angenommen.
190 Das Argument @var{x} kann auch eine indizierte Variable oder ein Teilausdruck
191 von @var{expr} sein.
193 @code{coeff} wendet weder die Funktion @code{expand} noch die Funktion 
194 @code{factor} an, um einen Ausdruck zu expandieren oder zu faktorisieren.  Daher
195 kann es zu anderen Ergebnissen kommen, wenn zuvor diese Funktionen angewendet 
196 werden.
198 Wird @code{coeff} auf Listen, Matrizen oder Gleichungen angewendet, wird die
199 Funktion auf die Elemente oder beide Seiten der Gleichung angewendet.
201 Siehe auch die Funktion @mrefdot{bothcoef}
203 Beispiele:
205 @code{coeff} gibt den Koeffizienten von @code{@var{x}^@var{n}} des Ausdrucks
206 @var{expr} zur@"uck.
208 @example
209 (%i1) coeff(b^3*a^3 + b^2*a^2 + b*a + 1, a^3);
210                                 3
211 (%o1)                          b
212 @end example
214 @code{coeff(@var{expr}, @var{x}^@var{n})} ist @"aquivalent zu
215 @code{coeff(@var{expr}, @var{x}, @var{n})}.
217 @example
218 (%i1) coeff(c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z, 3);
219 (%o1)                         - c
220                                  3
221 (%i2) coeff(c[4]*z^4 - c[3]*z^3 - c[2]*z^2 + c[1]*z, z^3);
222 (%o2)                         - c
223                                  3
224 @end example
226 @code{coeff(@var{expr}, @var{x}, 0)} gibt den Teil des Ausdrucks @var{expr}
227 zur@"uck, der frei von der Variablen @var{x} ist.
229 @example
230 (%i1) coeff(a*u + b^2*u^2 + c^3*u^3, b, 0);
231                             3  3
232 (%o1)                      c  u  + a u
233 @end example
235 @var{x} kann eine einfache Variable, eine indizierte Variable oder ein 
236 Teilausdruck des Ausdrucks @var{expr} sein.
238 @example
239 (%i1) coeff(h^4 - 2*%pi*h^2 + 1, h, 2);
240 (%o1)                        - 2 %pi
241 (%i2) coeff(v[1]^4 - 2*%pi*v[1]^2 + 1, v[1], 2);
242 (%o2)                        - 2 %pi
243 (%i3) coeff (sin(1+x)*sin(x) + sin(1+x)^3*sin(x)^3, sin(1+x)^3);
244                                 3
245 (%o3)                        sin (x)
246 (%i4) coeff((d - a)^2*(b + c)^3 + (a + b)^4*(c - d), a + b, 4);
247 (%o4)                         c - d
248 @end example
250 @code{coeff} wendet die Funktionen @code{expand} und @code{factor} nicht an.
252 @example
253 (%i1) coeff(c*(a + b)^3, a);
254 (%o1)                           0
255 (%i2) expand(c*(a + b)^3);
256                  3          2        2        3
257 (%o2)           b  c + 3 a b  c + 3 a  b c + a  c
258 (%i3) coeff(%, a);
259                                 2
260 (%o3)                        3 b  c
261 (%i4) coeff(b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c, (a + b)^3);
262 (%o4)                           0
263 (%i5) factor(b^3*c + 3*a*b^2*c + 3*a^2*b*c + a^3*c);
264                                   3
265 (%o5)                      (b + a)  c
266 (%i6) coeff(%, (a + b)^3);
267 (%o6)                           c
268 @end example
270 @code{coeff} wird bei Listen und Matrizen auf die Elemente und bei Gleichungen
271 auf die beiden Seiten angewendet.
273 @example
274 (%i1) coeff([4*a, -3*a, 2*a], a);
275 (%o1)                      [4, - 3, 2]
276 (%i2) coeff(matrix ([a*x, b*x], [-c*x, -d*x]), x);
277                           [  a    b  ]
278 (%o2)                     [          ]
279                           [ - c  - d ]
280 (%i3) coeff(a*u - b*v = 7*u + 3*v, u);
281 (%o3)                         a = 7
282 @end example
284 Die folgende Definition der Funktion @code{coeff_list} liefert eine Liste mit
285 den Koeffizienten, die in einem Polynom auftreten.  Neben der Funktion
286 @code{coeff} kommt hier die Funktion @mref{hipow} zum Einsatz, um den h@"ochsten
287 Exponenten zu ermitteln. @mref{rat} und @mref{ratdisrep} werden verwendet, 
288 um das Polynom zwischenzeitlich in die kanonische Form (CRE) zu bringen.
290 @example
291 (%i1) b : (x-y)^2;
292                                        2
293 (%o1)                           (x - y)
294 (%i2) coeff_list(a, x) := (
295    a : rat(a),
296    reverse( makelist(ratdisrep(coeff(a, x, i)), i,0, hipow(a, x)) ))$
298 (%i3) coeff_list(b, x);
299                                          2
300 (%o3)                        [1, - 2 y, y ]
301 @end example
302 @end deffn
304 @c --- 11.12.2010 DK -----------------------------------------------------------
305 @anchor{content}
306 @deffn {Funktion} content (@var{p}, @var{x_1}, @dots{}, @var{x_n})
308 Gibt eine Liste zur@"uck, deren erstes Element der gr@"o@ss{}te gemeinsame 
309 Teiler der Koeffizienten des Polynoms @var{p} in der Variablen @var{x_n} ist 
310 und dessen zweites Element das durch den gr@"o@ss{}ten gemeinsamen Teiler 
311 dividierte Polynom ist.  Die anderen Argumente @var{x_1}, @dots{}, @var{x_n-1}
312 haben dieselbe Bedeutung wie f@"ur die Funktion @mrefdot{ratvars}
314 Beispiel:
316 @example
317 (%i1) content(2*x*y + 4*x^2*y^2, y);
318                                    2
319 (%o1)                   [2 x, 2 x y  + y]
320 @end example
321 @end deffn
323 @c --- 05.07.2011 DK -----------------------------------------------------------
324 @anchor{denom}
325 @deffn {Funktion} denom (@var{expr})
327 Gibt den Nenner des Ausdrucks @var{expr} zur@"uck, wenn dieser ein
328 Quotient ist.  Ist der Ausdruck @var{expr} kein Quotient wird @var{expr}
329 zur@"uckgegeben.
331 Die Funktion @code{denom} wertet das Argument aus.  Siehe auch die Funktion
332 @mrefdot{num}
334 Beispiel:
336 @example
337 (%i1) denom(x^2/(x+1));
338 (%o1)                         x + 1
339 @end example
340 @end deffn
342 @c --- 01.12.2010 DK -----------------------------------------------------------
343 @anchor{divide}
344 @deffn {Funktion} divide (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
346 Berechnet den Quotienten und den Rest der Division des Polynom @var{p_1} durch
347 das Polynom @var{p_2} f@"ur die Variable @var{x_n}.  Die anderen Argumente
348 @var{x_1}, @dots{}, @var{x_n-1} haben dieselbe Bedeutung wie f@"ur die Funktion
349 @mrefdot{ratvars}  Das Ergebnis ist eine Liste, wobei das erste Element der
350 Quotient und das zweite Element der Rest ist.
352 Die Argumente der Funktion @code{divide} k@"onnen auch ganze Zahlen sein.
354 Siehe auch die Funktionen @mref{quotient} und @mrefcomma{remainder} die jeweils
355 den Quotienten und den Rest der Polynomdivision zur@"uckgegeben.
357 Beispiele:
359 Im zweiten Beispiel ist @code{y} die Hauptvariable des Ausdrucks.
361 @example
362 (%i1) divide (x + y, x - y, x);
363 (%o1)                       [1, 2 y]
364 (%i2) divide (x + y, x - y);
365 (%o2)                      [- 1, 2 x]
366 @end example
368 @need 800
369 Ein Beispiel f@"ur zwei Polynome in zwei Variablen.
371 @example
372 (%i1) poly1 : sum(x^k*y^(6-k), k, 1, 5);
373                   5    2  4    3  3    4  2    5
374 (%o1)          x y  + x  y  + x  y  + x  y  + x  y
375 (%i2) poly2 : sum(2*k*x^k*y^(3-k), k, 1, 3);
376                           2      2        3
377 (%o2)                2 x y  + 4 x  y + 6 x
378 (%i3) divide(poly1, poly2, x);
379               3        2      2          5       2  4
380            4 y  + 3 x y  + 9 x  y  23 x y  + 16 x  y
381 (%o3)     [----------------------, ------------------]
382                      54                    27
383 (%i4) expand(first(%)*poly2 + second(%));
384                   5    2  4    3  3    4  2    5
385 (%o4)          x y  + x  y  + x  y  + x  y  + x  y
386 @end example
387 @end deffn
389 @c --- 09.12.2010 DK -----------------------------------------------------------
390 @anchor{dontfactor}
391 @defvr {Optionsvariable} dontfactor
392 Standardwert: @code{[]}
394 Der Optionsvariablen @code{dontfactor} kann eine Liste mit den Variablen
395 zugewiesen werden, bez@"uglich der ein Ausdruck nicht faktorisiert werden soll.
396 Weiterhin wird nicht bez@"uglich von Variablen faktorisiert, die gem@"a@ss{}
397 der kanonischen Ordnung der Variablen von geringerer Bedeutung sind als die
398 Variablen in der Liste @code{dontfactor}.
400 Beispiel:
402 Im zweiten Fall wird das Polynom nicht bez@"uglich der Variablen @var{x}
403 faktorisiert.
405 @example
406 (%i1) expr:expand((x+1)^3*(y+2)^2);
407        3  2      2  2        2    2      3         2
408 (%o1) x  y  + 3 x  y  + 3 x y  + y  + 4 x  y + 12 x  y + 12 x y
409                                              3       2
410                                   + 4 y + 4 x  + 12 x  + 12 x + 4
411 (%i2) factor(expr);
412                                3        2
413 (%o2)                   (x + 1)  (y + 2)
414 (%i3) dontfactor:[x];
415 (%o3)                          [x]
416 (%i4) factor(expr);
417                    3      2                   2
418 (%o4)            (x  + 3 x  + 3 x + 1) (y + 2)
419 @end example
420 @end defvr
422 @c --- 11.12.2010 DK -----------------------------------------------------------
423 @anchor{eliminate}
424 @deffn {Funktion} eliminate ([@var{eqn_1}, @dots{}, @var{eqn_n}], [@var{x_1}, @dots{}, @var{x_k}])
426 Wendet ein Subresultanten-Verfahren an, um die Variablen @var{x_1}, @dots{}, 
427 @var{x_k} aus den Gleichungen @var{eqn_1}, @dots{}, @var{eqn_n} zu eliminieren.
428 Die R@"uckgabe ist ein Gleichungssystem mit @code{@var{n} - @var{k}}
429 Gleichungen, wobei die @var{k}-Variablen @var{x_1}, @dots{}, @var{x_k}
430 eliminiert sind.
432 Beispiel:
434 @example
435 (%i1) eqn1: 2*x^2 + y*x + z;
436                                       2
437 (%o1)                    z + x y + 2 x
438 (%i2) eqn2: 3*x + 5*y - z - 1;
439 (%o2)                  - z + 5 y + 3 x - 1
440 (%i3) eqn3: z^2 + x - y^2 + 5;
441                           2    2
442 (%o3)                    z  - y  + x + 5
443 (%i4) eliminate([eqn1, eqn2, eqn3], [y,z]);
444               2      4      3       2
445 (%o4)       [x  (45 x  + 3 x  + 11 x  + 81 x + 124)]
446 @end example
447 @end deffn
449 @c --- 19.02.2011 DK -----------------------------------------------------------
450 @anchor{ezgcd}
451 @deffn {Funktion} ezgcd (@var{p_1}, @var{p_2}, @var{p_3}, @dots{})
453 Gibt eine Liste zur@"uck, deren erstes Element der gr@"o@ss{}te gemeinsame
454 Teiler der Polynome @var{p_1}, @dots{}, @var{p_n} ist und deren weitere Elemente
455 die durch den gr@"o@ss{}ten gemeinsamen Teiler dividierten Polynome sind.  Der
456 gr@"o@ss{}te gemeinsame Teiler wird immer mit dem @code{ezgcd}-Algorithmus 
457 bestimmt.
459 Siehe auch die Funktionen @mrefcomma{gcd} @mref{gcdex} @mref{gcdivide} und
460 @mrefdot{poly_gcd}
462 Beispiel:
464 Die drei Polynome haben den gr@"o@ss{}ten gemeinsamen Teiler @code{2*x-3}.
465 Der gr@"o@ss{}te gemeinsame Teiler wird zuerst mit der Funktion @code{gcd}
466 berechnet.  Dann wird das Ergebnis der Funktion @code{ezgcd} gezeigt.
468 @example
469 (%i1) p1 : 6*x^3-17*x^2+14*x-3;
470                         3       2
471 (%o1)                6 x  - 17 x  + 14 x - 3
472 (%i2) p2 : 4*x^4-14*x^3+12*x^2+2*x-3;
473 @group
474                     4       3       2
475 (%o2)            4 x  - 14 x  + 12 x  + 2 x - 3
476 @end group
477 (%i3) p3 : -8*x^3+14*x^2-x-3;
478                           3       2
479 (%o3)                - 8 x  + 14 x  - x - 3
481 (%i4) gcd(p1, gcd(p2, p3));
482 (%o4)                        2 x - 3
484 (%i5) ezgcd(p1, p2, p3);
485                    2               3      2           2
486 (%o5) [2 x - 3, 3 x  - 4 x + 1, 2 x  - 4 x  + 1, - 4 x  + x + 1]
487 @end example
488 @end deffn
490 @c --- 11.12.2010 DK -----------------------------------------------------------
491 @anchor{facexpand}
492 @defvr {Optionsvariable} facexpand
493 Standardwert: @code{true}
495 Die Optionsvariable @code{facexpand} kontrolliert, ob die irreduziblen Faktoren
496 der Faktorisierung mit @mref{factor} in einer expandierten oder in einer
497 rekursiven (CRE-Form) vorliegen.  Der Standard ist, dass die Faktoren expandiert
498 werden.
499 @end defvr
501 @c --- 30.06.2011 DK -----------------------------------------------------------
502 @anchor{factor}
503 @deffn  {Funktion} factor (@var{expr})
504 @deffnx {Funktion} factor (@var{expr}, @var{p})
506 @c Factors the expression @var{expr}, containing any number of variables or 
507 @c functions, into factors irreducible over the integers.
508 @c @code{factor (@var{expr}, @var{p})} factors @var{expr} over the field of 
509 @c rationals with an element adjoined whose minimum polynomial is @var{p}.
511 Faktorisiert den Ausdruck @var{expr}, der eine beliebige Zahl an Variablen 
512 oder Funktionen enthalten kann, in irreduzible Faktoren @"uber die ganzen 
513 Zahlen.  @code{factor(@var{expr}, @var{p}} faktorisiert @var{expr} @"uber den 
514 K@"orper der rationalen Zahlen, der um die Nullstellen des minimalen Polynoms
515 @var{p} erweitert ist.
517 @c @code{factor} uses @code{ifactors} function for factoring integers.
519 @code{factor} ruft die Funktion @mref{ifactors} auf, um ganze Zahlen zu 
520 faktorisieren.
522 @c @code{factorflag} if @code{false} suppresses the factoring of integer
523 @c factors of rational expressions.
525 Hat die Optionsvariable @mref{factorflag} den Wert @code{false}, wird die
526 Faktorisierung von ganzen Zahlen unterdr@"uckt, die im Nenner einer rationalen
527 Funktion auftreten.
529 @c @code{dontfactor} may be set to a list of variables with respect to which
530 @c factoring is not to occur.  (It is initially empty).  Factoring also
531 @c will not take place with respect to any variables which are less
532 @c important (using the variable ordering assumed for CRE form) than
533 @c those on the @code{dontfactor} list.
535 Der Optionsvariablen @mref{dontfactor} kann eine Liste mit den Variablen
536 zugewiesen werden, bez@"uglich der ein Ausdruck nicht faktorisiert werden soll.
537 Weiterhin wird nicht bez@"uglich von Variablen faktorisiert, die gem@"a@ss{}
538 der kanonischen Ordnung der Variablen von geringerer Bedeutung sind als die
539 Variablen in der Liste @code{dontfactor}.
541 @c @code{savefactors} if @code{true} causes the factors of an expression which
542 @c is a product of factors to be saved by certain functions in order to
543 @c speed up later factorizations of expressions containing some of the
544 @c same factors.
546 Hat die Optionsvariable @mref{savefactors} den Wert @code{true}, versuchen
547 einige Funktionen bei der Vereinfachung eine bereits vorhandene Faktorisierung
548 zu erhalten, um weitere Vereinfachungen zu beschleunigen.
550 @c @code{berlefact} if @code{false} then the Kronecker factoring algorithm will
551 @c be used otherwise the Berlekamp algorithm, which is the default, will
552 @c be used.
554 Hat die Optionsvariable @mref{berlefact} den Wert @code{false}, dann wird der
555 Kronecker-Al@-go@-rith@-mus f@"ur die Faktorisierung genutzt.  Ansonsten wird
556 der Berlekamp-Algorithmus genutzt.  Der Standardwert ist @code{true}.
558 @c @code{intfaclim} if @code{true} maxima will give up factorization of
559 @c integers if no factor is found after trial divisions and Pollard's rho
560 @c method.  If set to @code{false} (this is the case when the user calls
561 @c @code{factor} explicitly), complete factorization of the integer will be
562 @c attempted.  The user's setting of @code{intfaclim} is used for internal
563 @c calls to @code{factor}.  Thus, @code{intfaclim} may be reset to prevent
564 @c Maxima from taking an inordinately long time factoring large integers.
566 Hat die Optionsvariable @mref{intfaclim} den Wert @code{true}, gibt Maxima
567 die Faktorisierung von ganzen Zahlen auf, wenn keine Faktorisierung durch
568 Anwendung der Methode der Probedivision und der Pollard-Rho-Methode gefunden
569 werden konnten.  Hat @code{intfaclim} den Wert @code{false}, versucht Maxima
570 eine ganze Zahl vollst@"andig zu faktorisieren.  Der Wert der Optionsvariablen
571 @code{intfaclim} wird von der Funktion @code{factor} beachtet.  Mit dem Setzen
572 von @code{intfaclim} kann der Nutzer verhindern, dass Maxima beim Versuch sehr
573 gro@ss{}e ganze Zahlen zu faktorisieren, unn@"otig viel Zeit verbraucht.
575 Beispiele:
577 @example
578 (%i1) factor (2^63 - 1);
579                     2
580 (%o1)              7  73 127 337 92737 649657
581 (%i2) factor (-8*y - 4*x + z^2*(2*y + x));
582 (%o2)               (2 y + x) (z - 2) (z + 2)
583 (%i3) -1 - 2*x - x^2 + y^2 + 2*x*y^2 + x^2*y^2;
584                 2  2        2    2    2
585 (%o3)          x  y  + 2 x y  + y  - x  - 2 x - 1
586 (%i4) block ([dontfactor: [x]], factor (%/36/(1 + 2*y + y^2)));
587                        2
588                      (x  + 2 x + 1) (y - 1)
589 (%o4)                ----------------------
590                            36 (y + 1)
591 (%i5) factor (1 + %e^(3*x));
592                       x         2 x     x
593 (%o5)              (%e  + 1) (%e    - %e  + 1)
594 (%i6) factor (1 + x^4, a^2 - 2);
595                     2              2
596 (%o6)             (x  - a x + 1) (x  + a x + 1)
597 (%i7) factor (-y^2*z^2 - x*z^2 + x^2*y^2 + x^3);
598                        2
599 (%o7)              - (y  + x) (z - x) (z + x)
600 (%i8) (2 + x)/(3 + x)/(b + x)/(c + x)^2;
601                              x + 2
602 (%o8)               ------------------------
603                                            2
604                     (x + 3) (x + b) (x + c)
605 (%i9) ratsimp (%);
606 @group
607                 4                  3
608 (%o9) (x + 2)/(x  + (2 c + b + 3) x
610      2                       2             2                   2
611  + (c  + (2 b + 6) c + 3 b) x  + ((b + 3) c  + 6 b c) x + 3 b c )
612 @end group
613 (%i10) partfrac (%, x);
614            2                   4                3
615 (%o10) - (c  - 4 c - b + 6)/((c  + (- 2 b - 6) c
617      2              2         2                2
618  + (b  + 12 b + 9) c  + (- 6 b  - 18 b) c + 9 b ) (x + c))
620                  c - 2
621  - ---------------------------------
622      2                             2
623    (c  + (- b - 3) c + 3 b) (x + c)
625 @group
626                          b - 2
627  + -------------------------------------------------
628              2             2       3      2
629    ((b - 3) c  + (6 b - 2 b ) c + b  - 3 b ) (x + b)
630 @end group
632                          1
633  - ----------------------------------------------
634              2
635    ((b - 3) c  + (18 - 6 b) c + 9 b - 27) (x + 3)
636 (%i11) map ('factor, %);
637               2
638              c  - 4 c - b + 6                 c - 2
639 (%o11) - ------------------------- - ------------------------
640                 2        2                                  2
641          (c - 3)  (c - b)  (x + c)   (c - 3) (c - b) (x + c)
643                        b - 2                        1
644             + ------------------------ - ------------------------
645                              2                          2
646               (b - 3) (c - b)  (x + b)   (b - 3) (c - 3)  (x + 3)
647 (%i12) ratsimp ((x^5 - 1)/(x - 1));
648                        4    3    2
649 (%o12)                x  + x  + x  + x + 1
650 (%i13) subst (a, x, %);
651                        4    3    2
652 (%o13)                a  + a  + a  + a + 1
653 (%i14) factor (%th(2), %);
654                        2        3        3    2
655 (%o14)   (x - a) (x - a ) (x - a ) (x + a  + a  + a + 1)
656 (%i15) factor (1 + x^12);
657                        4        8    4
658 (%o15)               (x  + 1) (x  - x  + 1)
659 (%i16) factor (1 + x^99);
660                  2            6    3
661 (%o16) (x + 1) (x  - x + 1) (x  - x  + 1)
663    10    9    8    7    6    5    4    3    2
664  (x   - x  + x  - x  + x  - x  + x  - x  + x  - x + 1)
666    20    19    17    16    14    13    11    10    9    7    6
667  (x   + x   - x   - x   + x   + x   - x   - x   - x  + x  + x
669     4    3            60    57    51    48    42    39    33
670  - x  - x  + x + 1) (x   + x   - x   - x   + x   + x   - x
672     30    27    21    18    12    9    3
673  - x   - x   + x   + x   - x   - x  + x  + 1)
674 @end example
676 Das Polynom @code{x^4+1} l@"asst sich nicht @"uber den K@"orper der ganzen
677 Zahlen faktorisieren.  Wird der K@"orper um das minimale Polynom @code{a^2+1}
678 erweitert, ist die Faktorisierung m@"oglich.  Die Nullstellen des minimalen
679 Polynoms sind die imagin@"are Einheit @code{%i} und @code{-%i}.  Das Ergebnis
680 entspricht der Faktorisierung mit der Funktion @mrefdot{gfactor}
682 @example
683 (%i1) factor(x^4+1);
684                               4
685 (%o1)                        x  + 1
686 (%i2) factor(x^4+1, a^2+1);
687                           2        2
688 (%o2)                   (x  - a) (x  + a)
689 (%i3) gfactor(x^4+1);
690                          2         2
691 (%o3)                  (x  - %i) (x  + %i)
692 @end example
693 @end deffn
695 @c --- 05.01.2011 DK -----------------------------------------------------------
696 @anchor{factorflag}
697 @defvr {Optionsvariable} factorflag
698 Standardwert: @code{false}
700 Hat die Optionsvariable @code{factorflag} den Wert @code{false}, wird die
701 Faktorisierung von ganzen Zahlen unterdr@"uckt, die im Nenner einer rationalen
702 Funktion auftreten.
704 Beispiel:
706 @example
707 (%i1) factorflag:false;
708 (%o1)                         false
709 (%i2) factor(1/6*(x^2+2*x+1));
710 @group
711                                    2
712                             (x + 1)
713 (%o2)                       --------
714                                6
715 @end group
716 (%i3) factorflag:true;
717 (%o3)                         true
718 (%i4) factor(1/6*(x^2+2*x+1));
719                                    2
720                             (x + 1)
721 (%o4)                       --------
722                               2 3
723 @end example
724 @end defvr
726 @c --- 30.06.2011 DK -----------------------------------------------------------
727 @anchor{factorout}
728 @deffn {Funktion} factorout (@var{expr}, @var{x_1}, @var{x_2}, @dots{})
730 @c Rearranges the sum @var{expr} into a sum of terms of the form
731 @c @code{f (@var{x_1}, @var{x_2}, ...)*g} where @code{g} is a product of
732 @c expressions not containing any @var{x_i} and @code{f} is factored.
734 Gruppiert eine Summe @var{expr} in eine Summe mit Termen der Form
735 @code{f(@var{x_1}, @var{x_2}, ...) * g}, wobei @code{g} ein gemeinsamer Faktor
736 des Polynoms @code{f} ist.
738 Beispiele:
740 Das Polynom wird zuerst nach der Variablen @var{x}, dann nach @var{y} und 
741 zuletzt nach beiden Variablen faktorisiert.
743 @example
744 (%i1) factorout(2*a*x^2+a*x+a+a*y, x);
745                                  2
746 (%o1)                a y + a (2 x  + x + 1)
747 (%i2) factorout(2*a*x^2+a*x+a+a*y, y);
748                                      2
749 (%o2)               a (y + 1) + 2 a x  + a x
750 (%i3) factorout(2*a*x^2+a*x+a+a*y, y, x);
751                                 2
752 (%o3)                 a (y + 2 x  + x + 1)
753 @end example
754 @end deffn
756 @c --- 30.06.2011 DK -----------------------------------------------------------
757 @anchor{factorsum}
758 @deffn {Funktion} factorsum (@var{expr})
760 @c Tries to group terms in factors of @var{expr} which are sums into groups of 
761 @c terms such that their sum is factorable.  @code{factorsum} can recover the 
762 @c result of @code{expand ((x + y)^2 + (z + w)^2)} but it can't recover
763 @c @code{expand ((x + 1)^2 + (x + y)^2)} because the terms have variables in 
764 @c common.
766 Versucht Terme in @var{expr} so zu gruppieren, dass die Teilsummen
767 faktorisierbar sind.  @code{factorsum} kann zum Beispiel das expandierte
768 Polynom @code{expand ((x + y)^2 + (z + w)^2)} wieder herstellen, nicht jedoch
769 das expandierte Polynom @code{expand ((x + 1)^2 + (x + y)^2)}, da die Terme
770 gemeinsame Variablen enthalten.
772 Beispiele:
774 @example
775 (%i1) expand ((x + 1)*((u + v)^2 + a*(w + z)^2));
776            2      2                            2      2
777 (%o1) a x z  + a z  + 2 a w x z + 2 a w z + a w  x + v  x
779                                      2        2    2            2
780                         + 2 u v x + u  x + a w  + v  + 2 u v + u
781 (%i2) factorsum(%);
782                                    2          2
783 (%o2)            (x + 1) (a (z + w)  + (v + u) )
784 @end example
785 @end deffn
787 @c --- 30.06.2011 DK -----------------------------------------------------------
788 @anchor{fasttimes}
789 @deffn {Funktion} fasttimes (@var{p_1}, @var{p_2})
791 @c Returns the product of the polynomials @var{p_1} and @var{p_2} by using a 
792 @c special algorithm for multiplication of polynomials.  @code{p_1} and 
793 @c @code{p_2} should be multivariate, dense, and nearly the same size.
794 @c Classical multiplication is of order @code{n_1 n_2} where @code{n_1} is the 
795 @c degree of @code{p_1} and @code{n_2} is the degree of @code{p_2}.
796 @c @code{fasttimes} is of order @code{max (n_1, n_2)^1.585}.
798 F@"uhrt eine schnelle Multiplikation der Polynome @var{p_1} und @var{p_2} aus
799 und gibt das Ergebnis zur@"uck.  Der Algorithmus ist von Vorteil, wenn die
800 Polynome mehrere Variablen haben und die Koeffizienten dicht besetzt sind.
801 Sind @code{n_1} und @code{n_2} jeweils der Grad der Polynome @var{p_1} und
802 @var{p_2}, dann ben@"otigt die schnelle Multiplikation
803 @code{max(n_1, n_2)^1.585} Multiplikationen.
804 @end deffn
806 @c --- 03.07.2011 DK -----------------------------------------------------------
807 @anchor{fullratsimp}
808 @deffn  {Funktion} fullratsimp (@var{expr})
809 @deffnx {Funktion} fullratsimp (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
811 @c @code{fullratsimp} repeatedly applies @code{ratsimp} followed by non-rational
812 @c simplification to an expression until no further change occurs, and returns 
813 @c the result.
815 @c When non-rational expressions are involved, one call to @code{ratsimp} 
816 @c followed as is usual by non-rational ("general") simplification may not be 
817 @c sufficient to return a simplified result.  Sometimes, more than one such call 
818 @c may be necessary.  @code{fullratsimp} makes this process convenient.
820 @c @code{fullratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})} takes one or more 
821 @c arguments similar to @code{ratsimp} and @code{rat}.
823 Die Funktion @code{fullratsimp} wendet die Funktion @mref{ratsimp} auf das
824 Argument @var{expr} solange wiederholt an, bis sich das Ergebnis nicht mehr
825 @"andert.  Nach jeder Anwendung von @code{ratsimp} wird der Ausdruck
826 zus@"atzlich vereinfacht.
828 Sind nicht-rationale Ausdr@"ucke in einem Ausdruck enthalten, kann der Ausdruck
829 m@"oglicherweise mit einem Aufruf von @code{ratsimp} nicht vollst@"andig
830 vereinfacht werden.  Dann kann der mehrfache Aufruf von @code{ratsimp} zu einem
831 besser vereinfachten Resultat f@"uhren.  Die Funktion @code{fullratsimp} ist
832 f@"ur solche Falle gedacht.
834 Die weiteren Argumente @var{x_1}, @dots{}, @var{x_n} entsprechen denen der
835 Funktionen @code{ratsimp} und @mrefdot{rat}
837 Beispiele:
839 @example
840 (%i1) expr: (x^(a/2) + 1)^2*(x^(a/2) - 1)^2/(x^a - 1);
841                        a/2     2   a/2     2
842                      (x    - 1)  (x    + 1)
843 (%o1)                -----------------------
844                               a
845                              x  - 1
846 (%i2) ratsimp (expr);
847                           2 a      a
848                          x    - 2 x  + 1
849 (%o2)                    ---------------
850                               a
851                              x  - 1
852 (%i3) fullratsimp (expr);
853                               a
854 (%o3)                        x  - 1
855 (%i4) rat (expr);
856 @group
857                        a/2 4       a/2 2
858                      (x   )  - 2 (x   )  + 1
859 (%o4)/R/             -----------------------
860                               a
861                              x  - 1
862 @end group
863 @end example
864 @end deffn
866 @c SPELL OUT WHAT fullratsubst DOES INSTEAD OF ALLUDING TO ratsubst AND
867 @c lratsubst.  THIS ITEM NEEDS MORE WORK
869 @c --- 03.07.2011 DK -----------------------------------------------------------
870 @anchor{fullratsubst}
871 @deffn {Funktion} fullratsubst (@var{a}, @var{b}, @var{c})
873 @c is the same as @code{ratsubst} except that it calls itself recursively on its
874 @c result until that result stops changing.  This function is useful when the 
875 @c replacement expression and the replaced expression have one or more variables
876 @c in common.
878 @c @code{fullratsubst} will also accept its arguments in the format of
879 @c @code{lratsubst}.  That is, the first argument may be a single substitution
880 @c equation or a list of such equations, while the second argument is the
881 @c expression being processed.
883 @c @code{load ("lrats")} loads @code{fullratsubst} and @code{lratsubst}.
885 Entspricht der Funktion @mref{ratsubst} mit dem Unterschied, dass die Funktion
886 solange rekursiv ausgef@"uhrt wird, bis sich das Ergebnis nicht mehr @"andert.
887 Diese Funktion kann n@"utzlich sein, wenn der Ausdruck, der eingesetzt wird,
888 und der zu ersetzende Ausdruck mehrere Variablen gemeinsam haben.
890 @code{fullratsubst} akzeptiert auch Argumente im Format der Funktion
891 @mrefdot{lratsubst}  Das erste Argument kann also auch eine einzelne oder eine
892 Liste von Gleichungen sein.  Das zweite Argument ist in diesem Fall der
893 Ausdruck in dem die Ersetzungen durchgef@"uhrt werden.
895 Mit dem Kommando @code{load("lrats")} werden die Funktionen @code{fullratsubst}
896 und @code{lratsubst} geladen.
898 Beispiele:
900 @example
901 (%i1) load ("lrats")$
902 @end example
904 @c @code{subst} can carry out multiple substitutions.
905 @c @code{lratsubst} is analogous to @code{subst}.
907 @mref{subst} kann mehrfache Substitutionen ausf@"uhren.  Die Funktion
908 @code{lratsubst} funktioniert analog zu der Funktion @code{subst}.
910 @example
911 (%i2) subst ([a = b, c = d], a + c);
912 (%o2)                         d + b
913 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
914 (%o3)                (d + a c) e + a d + b c
915 @end example
917 @c If only one substitution is desired, then a single
918 @c equation may be given as first argument.
920 Ist nur eine Substitution auszuf@"uhren, kann diese als eine einzelne Gleichung
921 angegeben werden.
923 @example
924 (%i4) lratsubst (a^2 = b, a^3);
925 (%o4)                          a b
926 @end example
928 @c @code{fullratsubst} is equivalent to @code{ratsubst}
929 @c except that it recurses until its result stops changing.
931 @code{fullratsubst} ist @"aquivalent zur Funktion @code{ratsubst} mit dem
932 Unterschied, dass die Funktion solange rekursiv angewendet wird, bis sich das
933 Ergebnis nicht mehr @"andert.
935 @example
936 (%i5) ratsubst (b*a, a^2, a^3);
937                                2
938 (%o5)                         a  b
939 (%i6) fullratsubst (b*a, a^2, a^3);
940 @group
941                                  2
942 (%o6)                         a b
943 @end group
944 @end example
946 @c @code{fullratsubst} also accepts a list of equations or a single
947 @c equation as first argument.
949 @code{fullratsubst} akzeptiert auch eine Liste mit Gleichungen oder eine
950 Gleichung als erstes Argument.
952 @example
953 (%i7) fullratsubst ([a^2 = b, b^2 = c, c^2 = a], a^3*b*c);
954 (%o7)                           b
955 (%i8) fullratsubst (a^2 = b*a, a^3);
956                                  2
957 (%o8)                         a b
958 @end example
960 @c @code{fullratsubst} may cause an indefinite recursion.
962 @code{fullratsubst} kann zu einer unendlichen Rekursion f@"uhren.
964 @example
965 (%i9) errcatch (fullratsubst (b*a^2, a^2, a^3));
967 *** - Lisp stack overflow. RESET
968 @end example
969 @end deffn
971 @c --- 19.02.2011 DK -----------------------------------------------------------
972 @anchor{gcd}
973 @deffn  {Funktion} gcd (@var{p_1}, @var{p_2}, @var{x_1}, @dots{})
974 @deffnx {Optionsvariable} gcd
976 @c Returns the greatest common divisor of @var{p_1} and @var{p_2}.  The flag 
977 @c @code{gcd} determines which algorithm is employed.  Setting @code{gcd} to 
978 @c @code{ez}, @code{subres}, @code{red}, or @code{spmod} selects the 
979 @c @code{ezgcd}, subresultant @code{prs}, reduced, or modular algorithm,
980 @c respectively.  If @code{gcd} @code{false} then @code{gcd (@var{p_1}, 
981 @c @var{p_2}, @var{x})} always returns 1 for all @var{x}.  Many functions (e.g.
982 @c @code{ratsimp}, @code{factor}, etc.) cause gcd's to be taken implicitly.
983 @c For homogeneous polynomials it is recommended that @code{gcd} equal to
984 @c @code{subres} be used.  To take the gcd when an algebraic is present, e.g., 
985 @c @code{gcd (@var{x}^2 - 2*sqrt(2)*@var{x} + 2, @var{x} - sqrt(2))}, 
986 @c @code{algebraic} must be @code{true} and @code{gcd} must not be @code{ez}.
988 Gibt den gr@"o@ss{}ten gemeinsamen Teiler der Polynome @var{p_1} und @var{p_2}
989 zur@"uck.  Die Argumente @var{x_1}, @dots{} sind optional und haben dieselbe
990 Bedeutung wie f@"ur die Funktion @mrefdot{ratvars}  Die Optionsvariable 
991 @code{gcd} kontrolliert, welcher Algorithmus verwendet wird und kann die
992 folgenden Werte annehmen:
994 @table @code
995 @item ez
996 ezgcd-Alogrithmus
997 @item subres
998 Subresultanten-Algorithmus
999 @item red
1000 Reduzierter modularer Algorithmus
1001 @item spmod
1002 Modularer Algorithmus
1003 @item false
1004 kein Algorithmus, die R@"uckgabe ist immer 1
1005 @end table
1007 @c The @code{gcd} flag, default: @code{spmod}, if @code{false} will also prevent
1008 @c the greatest common divisor from being taken when expressions are converted 
1009 @c to canonical rational expression (CRE) form.  This will sometimes speed the 
1010 @c calculation if gcds are not required.
1012 Siehe auch die @mrefcomma{ezgcd} @mrefcomma{gcdex} @mrefcomma{gcdivide} und
1013 @mrefdot{poly_gcd}
1015 Beispiele:
1017 @example
1018 (%i1) p1:6*x^3+19*x^2+19*x+6; 
1019                         3       2
1020 (%o1)                6 x  + 19 x  + 19 x + 6
1021 (%i2) p2:6*x^5+13*x^4+12*x^3+13*x^2+6*x;
1022                   5       4       3       2
1023 (%o2)          6 x  + 13 x  + 12 x  + 13 x  + 6 x
1024 (%i3) gcd(p1, p2);
1025                             2
1026 (%o3)                    6 x  + 13 x + 6
1027 (%i4) p1/gcd(p1, p2), ratsimp;
1028 (%o4)                         x + 1
1029 (%i5) p2/gcd(p1, p2), ratsimp;
1030                               3
1031 (%o5)                        x  + x
1032 @end example
1034 @c @mref{ezgcd} returns a list whose first element is the greatest common
1035 @c divisor of the polynomials @var{p_1} and @var{p_2}, and whose remaining
1036 @c elements are the polynomials divided by the greatest common divisor.
1038 Die Funktion @mref{ezgcd} gibt als Ergebnis eine Liste zur@"uck, die als erstes
1039 Element den gr@"o@ss{}ten gemeinsamen Teiler und als weitere Elemente die durch
1040 den gr@"o@ss{}ten gemeinsamen Teiler dividierten Polynome enth@"alt.
1042 @example
1043 (%i6) ezgcd(p1, p2);
1044                     2                     3
1045 (%o6)           [6 x  + 13 x + 6, x + 1, x  + x]
1046 @end example
1047 @end deffn
1049 @c --- 19.02.2011 DK -----------------------------------------------------------
1050 @anchor{gcdex}
1051 @deffn  {Funktion} gcdex (@var{p_1}, @var{p_2})
1052 @deffnx {Funktion} gcdex (@var{p_1}, @var{p_2}, @var{x})
1054 @c Returns a list @code{[@var{a}, @var{b}, @var{u}]} where @var{u} is the 
1055 @c greatest common divisor (gcd) of @var{f} and @var{g}, and @var{u} is equal to
1056 @c @code{@var{a} @var{f} + @var{b} @var{g}}.  The arguments @var{f} and @var{g} 
1057 @c should be univariate polynomials, or else polynomials in @var{x} a supplied 
1058 @c @b{main} variable since we need to be in a principal ideal domain for this to
1059 @c work.  The gcd means the gcd regarding @var{f} and @var{g} as univariate 
1060 @c polynomials with coefficients being rational functions in the other 
1061 @c variables.
1063 Wendet den erweiterten Euklidischen Algorithmus f@"ur die beiden Polynome
1064 @var{p_1} und @var{p_2} an und gibt eine Liste @code{[s, t, u]} mit den
1065 Parametern @var{u}, @var{s} und @var{t} als Ergebnis zur@"uck.  Der Parameter
1066 @var{u} ist der gr@"o@ss{}te gemeinsame Teiler der Polynome.  Die Parameter
1067 @var{s} und @var{t} sind die Bezoutkoeffizienten, so dass gilt
1068 @code{u = s * p_1 + t * p_2}.
1070 Die R@"uckgabe der Funktion @code{gcdex} ist in der CRE-Form.
1072 @c @code{gcdex} implements the Euclidean algorithm, where we have a sequence of 
1073 @c @code{L[i]: [a[i], b[i], r[i]]} which are all perpendicular to 
1074 @c @code{[f, g, -1]} and the next one is built as if 
1075 @c @code{q = quotient(r[i]/r[i+1])} then @code{L[i+2]: L[i] - q L[i+1]}, and it
1076 @c terminates at @code{L[i+1]} when the remainder @code{r[i+2]} is zero.
1078 Siehe auch die Funktionen @mrefcomma{ezgcd} @mref{gcd} und @mrefdot{gcdivide}
1080 Die Argumente @var{f} und @var{g} k@"onnen ganze Zahlen sein.  In diesem Falle
1081 wird die Funktion @mref{igcdex} von der Funktion @code{gcdex} aufgerufen.
1083 Siehe auch die Funktionen @mrefcomma{ezgcd} @mrefcomma{gcd}@w{}
1084 @mref{gcdivide} und @mrefdot{poly_gcd}
1086 Beispiel:
1088 @example
1089 (%i1) gcdex (x^2 + 1, x^3 + 4);
1090                        2
1091                       x  + 4 x - 1  x + 4
1092 (%o1)/R/           [- ------------, -----, 1]
1093                            17        17
1094 (%i2) % . [x^2 + 1, x^3 + 4, -1];
1095 (%o2)/R/                        0
1096 @end example
1098 Im folgenden Beispiel ist die unabh@"angige Variable explizit als @var{x}
1099 angegeben.  Ohne diese Angabe ist @var{y} die unabh@"angige Variable.
1101 @example
1102 (%i1) gcdex (x*(y + 1), y^2 - 1, x);
1103                                1
1104 (%o1)/R/                 [0, ------, 1]
1105                               2
1106                              y  - 1
1107 @end example
1108 @end deffn
1110 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN 
1111 @c INTEGERS ARE REFERENCED
1113 @c --- 03.07.2011 DK -----------------------------------------------------------
1114 @anchor{gcfactor}
1115 @deffn {Funktion} gcfactor (@var{g})
1117 @c Factors the Gaussian integer @var{n} over the Gaussian integers, i.e.,
1118 @c numbers of the form @code{@var{a} + @var{b} @code{%i}} where @var{a} and
1119 @c @var{b} are rational integers (i.e.,  ordinary integers).  Factors are
1120 @c normalized by making @var{a} and @var{b} non-negative.
1122 Faktorisiert die Gau@ss{}sche Zahl @var{g} @"uber die Gau@ss{}sche Zahlen.  Eine
1123 Gau@ss{}sche Zahl @code{g} ist durch @code{g = a + b*%i} gegeben, wobei @code{a}
1124 und @code{b} ganze Zahlen sind.  Die Faktoren werden so normalisiert, dass
1125 @var{a} und @var{b} nicht negativ sind.
1127 Beispiele:
1129 @example
1130 (%i1) gcfactor(5);
1131 (%o1)               - %i (1 + 2 %i) (2 + %i)
1132 (%i2) expand(%);
1133 (%o2)                           5
1134 (%i3) gcfactor(5+%i);
1135 (%o3)               - %i (1 + %i) (2 + 3 %i)
1136 (%i4) expand(%);
1137 (%o4)                        %i + 5
1138 @end example
1139 @end deffn
1141 @c CHOOSE ONE CHARACTERIZATION OF "GAUSSIAN INTEGERS" AND USE IT WHERE GAUSSIAN 
1142 @c INTEGERS ARE REFERENCED
1144 @c --- 03.07.2011 DK -----------------------------------------------------------
1145 @anchor{gfactor}
1146 @deffn {Funktion} gfactor (@var{expr})
1148 @c Factors the polynomial @var{expr} over the Gaussian integers
1149 @c (that is, the integers with the imaginary unit @code{%i} adjoined).
1150    @c "This is like" -- IS IT THE SAME OR NOT ??
1151 @c This is like @code{factor (@var{expr}, @var{a}^2+1)} where @var{a} is
1152 @c @code{%i}.
1154 Faktorisiert das Polynom @var{expr} @"uber die Gau@ss{}schen Zahlen.  Das ist
1155 die Faktorisierung @"uber den K@"orper der ganzen Zahlen, der um das Element
1156 @var{%i} erweitert ist.
1158 Die Faktorisierung der Funktion @code{gfactor} ist @"aquivalent zu
1159 @code{factor(@var{expr}), @var{a}^2+1)} mit dem minimalen Polynom
1160 @code{@var{a}^2+1}, das die Nullstelle @code{%i} hat.  Siehe auch
1161 @mrefdot{factor}
1163 Beispiel:
1165 @example
1166 (%i1) gfactor(x^4 - 1);
1167 (%o1)           (x - 1) (x + 1) (x - %i) (x + %i)
1168 (%i2) factor(x^4 - 1, a^2+1);
1169 (%o2)            (x - 1) (x + 1) (x - a) (x + a)
1170 @end example
1171 @end deffn
1173 @c DESCRIBE THIS INDEPENDENTLY OF factorsum
1174 @c THIS ITEM NEEDS MORE WORK
1176 @c --- 03.07.2011 DK -----------------------------------------------------------
1177 @anchor{gfactorsum}
1178 @deffn {Funktion} gfactorsum (@var{expr})
1180 @c is similar to @code{factorsum} but applies @code{gfactor} instead
1181 @c of @code{factor}.
1183 Entspricht der Funktion @mref{factorsum} mit den Unterschied, dass anstatt der
1184 Funktion @mref{factor} die Funktion @mref{gfactor} angewendet wird, um den
1185 Ausdruck @var{expr} zu faktorisieren.
1186 @end deffn
1188 @c --- 19.02.2011 DK -----------------------------------------------------------
1189 @anchor{hipow}
1190 @deffn {Funktion} hipow (@var{expr}, @var{x})
1192 Gibt den gr@"o@ss{}ten Exponenten des Arguments @var{x} zur@"uck, der im
1193 Ausdruck @var{expr} auftritt.  Treten symbolische Exponenten auf, wird ein
1194 Ausdruck mit @code{max} zur@"uckgegeben.  Ist das Argument @var{x} nicht im
1195 Ausdruck vorhanden, ist die R@"uckgabe @code{0}.
1197 Die Funktion @code{hipow} betrachtet keine @"aquivalenten Ausdr@"ucke.  Daher
1198 k@"onnen die Ausdr@"ucke @code{expand(@var{expr})} und @var{expr} ein
1199 verschiedenes Ergebnis haben.
1201 Siehe auch die Funktionen @mref{lopow} und @mrefdot{coeff}
1203 @need 800
1204 Beispiele:
1206 @example
1207 (%i1) hipow (y^3 * x^2 + x * y^4, x);
1208 (%o1)                           2
1209 (%i2) hipow ((x + y)^5, x);
1210 (%o2)                           1
1211 (%i3) hipow (expand ((x + y)^5), x);
1212 (%o3)                           5
1213 (%i4) hipow ((x + y)^5, x + y);
1214 (%o4)                           5
1215 (%i5) hipow (expand ((x + y)^5), x + y);
1216 (%o5)                           0
1217 (%i1) hipow ((x+y)^2 + (x+y)^a, x+y);
1218 (%o1)                       max(2, a)
1219 @end example
1220 @end deffn
1222 @c I SUSPECT THE FOLLOWING TEXT IS OUTDATED DUE TO CHANGES IN INTEGER FACTORING 
1223 @c CODE
1225 @c --- 03.07.2011 DK -----------------------------------------------------------
1226 @anchor{intfaclim}
1227 @defvr {Optionsvariable} intfaclim
1228 Standardwert: @code{true}
1230 @c If @code{true}, maxima will give up factorization of
1231 @c integers if no factor is found after trial divisions and Pollard's rho
1232 @c method and factorization will not be complete.
1234 @c When @code{intfaclim} is @code{false} (this is the case when the user
1235 @c calls @code{factor} explicitly), complete factorization will be
1236 @c attempted.  @code{intfaclim} is set to @code{false} when factors are
1237 @c computed in @code{divisors}, @code{divsum} and @code{totient}.
1238    @c ANY OTHERS ??
1240    @c WHAT ARE THESE MYSTERIOUS INTERNAL CALLS ?? (LET'S JUST LIST THE FUNCTIONS
1241    @c INVOLVED)
1242 @c Internal calls to @code{factor} respect the user-specified value of
1243 @c @code{intfaclim}.  Setting @code{intfaclim} to @code{true} may reduce
1244 @c the time spent factoring large integers.
1246 Hat die Optionsvariable @mref{intfaclim} den Wert @code{true}, gibt Maxima
1247 die Faktorisierung von ganzen Zahlen auf, wenn keine Faktorisierung durch
1248 Anwendung der Methode der Probedivision und der Pollard-Rho-Methode gefunden
1249 werden konnten.
1251 Hat @code{intfaclim} den Wert @code{false}, versucht Maxima eine ganze Zahl
1252 vollst@"andig zu faktorisieren.  @code{intfaclim} wird von den Funktionen
1253 @mrefcomma{divisors} @mref{divsum} und @mref{totient} auf den Wert @code{false}
1254 gesetzt.
1256 Der Wert der Optionsvariablen @code{intfaclim} wird von der Funktion
1257 @code{factor} beachtet.  Mit dem Setzen von @code{intfaclim} kann der Nutzer
1258 verhindern, dass Maxima beim Versuch sehr gro@ss{}e ganze Zahlen zu
1259 faktorisieren, unn@"otig viel Zeit verbraucht.
1261 @c NEED EXAMPLES HERE
1262 @end defvr
1264 @c --- 03.07.2011 DK -----------------------------------------------------------
1265 @anchor{keepfloat}
1266 @defvr {Optionsvariable} keepfloat
1267 Standardwert: @code{false}
1269 @c When @code{keepfloat} is @code{true}, prevents floating
1270 @c point numbers from being rationalized when expressions which contain
1271 @c them are converted to canonical rational expression (CRE) form.
1273 @c Note that the function @code{solve} and those functions calling it
1274 @c (@code{eigenvalues}, for example) currently ignore this flag, converting
1275 @c floating point numbers anyway.
1277 Hat die Optionsvariable @code{keepfloat} den Wert @code{true}, werden
1278 Gleitkommazahlen nicht in rationale Zahlen umgewandelt, wenn Ausdr@"ucke mit
1279 Gleitkommazahlen in eine CRE-Form umgewandelt werden.
1281 Die Funktion @mref{solve} und Funktionen, die @code{solve} aufrufen, beachten
1282 den Wert von @code{keepfloat} nicht.
1284 Beispiele:
1286 @example
1287 (%i1) rat(x/2.0);
1289 rat: replaced 0.5 by 1/2 = 0.5
1290                                 x
1291 (%o1)/R/                        -
1292                                 2
1293 (%i2) rat(x/2.0), keepfloat;
1294 (%o2)/R/                      0.5 x
1295 @end example
1297 @c @code{solve} ignores @code{keepfloat}:
1299 Die Funktion @code{solve} ignoriert den Wert der Optionsvariablen
1300 @code{keepfloat}.
1302 @example
1303 (%i3) solve(1.0-x,x), keepfloat;
1305 rat: replaced 1.0 by 1/1 = 1.0
1306 (%o3)                        [x = 1]
1307 @end example
1308 @end defvr
1310 @c --- 19.02.2011 DK -----------------------------------------------------------
1311 @anchor{lopow}
1312 @deffn {Funktion} lopow (@var{expr}, @var{x})
1314 @c Returns the lowest exponent of @var{x} which explicitly appears in 
1315 @c @var{expr}.  Thus
1317 Gibt den kleinsten Exponenten von @var{x} zur@"uck, der im Ausdruck @var{expr}
1318 auftritt.  Treten symbolische Exponententen auf, wird ein Ausdruck mit 
1319 @code{min} zur@"uckgegeben.  Ist das Argument @var{x} nicht im
1320 Ausdruck enthalten, ist die R@"uckgabe 0.
1322 Die Funktion @code{lopow} betrachtet keine @"aquivalenten Ausdr@"ucke.  Daher
1323 k@"onnen die Ausdr@"ucke @code{expand(@var{expr})} und @var{expr} ein
1324 verschiedenes Ergebnis haben.
1326 Siehe auch die Funktionen @mref{hipow} und @mrefdot{coeff}
1328 Beispiele:
1330 @example
1331 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1332 (%o1)                       min(a, 2)
1333 @end example
1334 @end deffn
1336 @c DESCRIBE lratsubst INDEPENDENTLY OF subst
1337 @c THIS ITEM NEEDS MORE WORK
1339 @c --- 05.07.2011 DK -----------------------------------------------------------
1340 @anchor{lratsubst}
1341 @deffn {Funktion} lratsubst (@var{L}, @var{expr})
1343 @c is analogous to @code{subst (@var{L}, @var{expr})}
1344 @c except that it uses @code{ratsubst} instead of @code{subst}.
1346 Ist analog zum Kommando @code{subst (@var{L}, @var{expr})} mit dem Unterschied,
1347 dass anstatt der Funktion @mref{subst} die Funktion @mref{ratsubst} genutzt
1348 wird.
1350 @c The first argument of @code{lratsubst} is an equation or a list of equations
1351 @c identical in format to that accepted by @code{subst}.  The substitutions are
1352 @c made in the order given by the list of equations, that is, from left to
1353 @c right.
1355 @c @code{load ("lrats")} loads @code{fullratsubst} and @code{lratsubst}.
1357 Das erste Argument der Funktion @code{lratsubst} ist eine Gleichung oder eine
1358 Liste mit Gleichungen, die dem Format der Funktion @code{subst} entsprechen.
1359 Die Substitutionen werden in der Reihenfolge der Gleichungen der Liste von links
1360 nach rechts ausgef@"uhrt.
1362 Mit dem Kommando @code{lrats} werden die Funktionen @code{fullratsubst} und
1363 @code{lratsubst} geladen.  Siehe auch die Funktion @mrefdot{fullratsubst}
1365 Beispiele:
1367 @example
1368 (%i1) load ("lrats")$
1369 @end example
1371 @c @code{subst} can carry out multiple substitutions.
1372 @c @code{lratsubst} is analogous to @code{subst}.
1374 @code{subst} kann mehrfache Substitutionen ausf@"uhren.  @code{lratsubst} ist
1375 analog zu @code{subst}.
1377 @example
1378 (%i2) subst ([a = b, c = d], a + c);
1379 (%o2)                         d + b
1380 (%i3) lratsubst ([a^2 = b, c^2 = d], (a + e)*c*(a + c));
1381 (%o3)                (d + a c) e + a d + b c
1382 @end example
1384 @c If only one substitution is desired, then a single
1385 @c equation may be given as first argument.
1387 Soll nur eine Substitution ausgef@"uhrt werden, kann eine einzelne Gleichung
1388 als erstes Argument angegeben werden.
1390 @example
1391 (%i4) lratsubst (a^2 = b, a^3);
1392 (%o4)                          a b
1393 @end example
1394 @end deffn
1396 @c --- 03.08.2011 DK -----------------------------------------------------------
1397 @anchor{modulus}
1398 @defvr {Optionsvariable} modulus
1399 Standardwert: @code{false}
1401 @c When @code{modulus} is a positive number @var{p}, operations on rational
1402 @c numbers (as returned by @code{rat} and related functions) are carried out
1403 @c modulo @var{p}, using the so-called "balanced" modulus system in which
1404 @c @code{@var{n} modulo @var{p}} is defined as an integer @var{k} in
1405 @c @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]} when @var{p} is odd, or
1406 @c @code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]} when @var{p} is even, such
1407 @c that @code{@var{a} @var{p} + @var{k}} equals @var{n} for some integer
1408 @c @var{a}.
1409    @c NEED EXAMPLES OF "BALANCED MODULUS" HERE
1411 Hat die Optionsvariable @code{modulus} eine positive Zahl @var{p} als Wert,
1412 werden Operationen f@"ur rationale Zahlen, wie von der Funktion @mref{rat} und
1413 verwandte Funktionen, modulo @var{p} ausgef@"uhrt.
1415 @code{@var{n}} mod @var{p} ist definiert als eine ganze Zahl, die f@"ur ungerade
1416 @var{p} die Werte @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]} annimmt
1417 und f@"ur gerade @var{p} die Werte @code{[-(@var{p}/2 - 1), ..., 0, ....,
1418 @var{p}/2]}, so dass  @code{@var{a} @var{p} + @var{k}} gleich @var{n} ist f@"ur
1419 eine ganze Zahl @var{a}.
1421    @c WHAT CAN THIS MEAN ?? IS THE MODULUS STORED WITH THE EXPRESSION ??
1422    @c "... in order to get correct results" WHAT DO YOU GET IF YOU DON'T RE-RAT ??
1423 @c If @var{expr} is already in canonical rational expression (CRE) form when
1424 @c @code{modulus} is reset, then you may need to re-rat @var{expr}, e.g.,
1425 @c @code{expr: rat (ratdisrep (expr))}, in order to get correct results.
1427 Liegt ein Ausdruck @var{expr} bereits in einer CRE-Form vor und wird der Wert
1428 der Optionsvariable @code{modulus} ge@"andert, dann sollte der Ausdruck zum
1429 Beispiel mit dem Kommando @code{expr: rat (ratdisrep (expr))} zun@"achst in die
1430 Standardform gebracht werden, um dann erneut in die CRE-Form umgewandelt zu
1431 werden, um korrekte Ergebnisse zu erzielen.
1433 @c Typically @code{modulus} is set to a prime number.
1434 @c If @code{modulus} is set to a positive non-prime integer,
1435 @c this setting is accepted, but a warning message is displayed.
1436 @c Maxima will allow zero or a negative integer to be assigned to @code{modulus},
1437 @c although it is not clear if that has any useful consequences.
1439 Typischerweise erh@"alt die Optionsvariable @code{modulus} eine Primzahl als
1440 Wert.  Erh@"alt @code{modulus} eine positive ganze Zahl als Wert, die nicht eine
1441 Primzahl ist, wird die Zuweisung akzeptiert, jedoch eine Warnung ausgegeben.
1442 Wird Null oder eine negative Zahl zugewiesen signalisiert Maxima einen Fehler.
1444 Beispiele:
1446 @example
1447 (%i1) modulus:7;
1448 (%o1)                           7
1449 (%i2) polymod([0,1,2,3,4,5,6,7]);
1450 (%o2)            [0, 1, 2, 3, - 3, - 2, - 1, 0]
1451 (%i3) modulus:false;
1452 (%o3)                         false
1453 (%i4) poly:x^6+x^2+1;
1454                             6    2
1455 (%o4)                      x  + x  + 1
1456 (%i5) factor(poly);
1457                             6    2
1458 (%o5)                      x  + x  + 1
1459 (%i6) modulus:13;
1460 (%o6)                          13
1461 (%i7) factor(poly);
1462 @group
1463                       2        4      2
1464 (%o7)               (x  + 6) (x  - 6 x  - 2)
1465 @end group
1466 (%i8) polymod(%);
1467                             6    2
1468 (%o8)                      x  + x  + 1
1469 @end example
1470 @end defvr
1472 @c APPARENTLY OBSOLETE: ONLY EFFECT OF $newfac COULD BE TO CAUSE NONEXISTENT
1473 @c FUNCTION NMULTFACT TO BE CALLED (IN FUNCTION FACTOR72 IN src/factor.lisp
1474 @c CIRCA LINE 1400)
1475 @c $newfac NOT USED IN ANY OTHER CONTEXT (ASIDE FROM DECLARATIONS)
1476 @c COMMENT IT OUT NOW, CUT IT ON THE NEXT PASS THROUGH THIS FILE
1477 @c @defvar newfac
1478 @c Default value: @code{false}
1479 @c 
1480 @c When @code{newfac} is @code{true}, @code{factor} will use the new factoring
1481 @c routines.
1482 @c 
1483 @c @end defvar
1485 @c --- 05.07.2011 DK -----------------------------------------------------------
1486 @anchor{num}
1487 @deffn {Funktion} num (@var{expr})
1489 @c Returns the numerator of @var{expr} if it is a ratio.
1490 @c If @var{expr} is not a ratio, @var{expr} is returned.
1492 @c @code{num} evaluates its argument.
1494 Gibt den Z@"ahler des Ausdrucks @var{expr} zur@"uck, wenn dieser ein
1495 Quotient ist.  Ist der Ausdruck @var{expr} kein Quotient wird @var{expr}
1496 zur@"uckgegeben.
1498 Die Funktion @code{num} wertet das Argument aus.  Siehe auch die Funktion
1499 @mrefdot{denom}
1501 Beispiel:
1503 @example
1504 (%i1) num(x^2/(x+1));
1505                                 2
1506 (%o1)                          x
1507 @end example
1508 @end deffn
1510 @c --- 05.07.2011 DK -----------------------------------------------------------
1511 @anchor{partfrac}
1512 @deffn {Funktion} partfrac (@var{expr}, @var{var})
1514 @c Expands the expression @var{expr} in partial fractions with respect to the
1515 @c main variable @var{var}.  @code{partfrac} does a complete partial fraction
1516 @c decomposition.
1518 @c TODO: BESCHREIBUNG DES ALGORITHMUS IST NICHT UEBERSETZT
1520 @c The algorithm employed is based on the fact that the
1521 @c denominators of the partial fraction expansion (the factors of the original
1522 @c denominator) are relatively prime.  The numerators can be written as linear
1523 @c combinations of denominators, and the expansion falls out.
1525 F@"uhrt f@"ur den Ausdruck @var{expr} eine vollst@"andige Partialbruchzerlegung
1526 aus.
1528 @example
1529 (%i1) 1/(1+x)^2 - 2/(1+x) + 2/(2+x);
1530                       2       2        1
1531 (%o1)               ----- - ----- + --------
1532                     x + 2   x + 1          2
1533                                     (x + 1)
1534 (%i2) ratsimp (%);
1535                                  x
1536 (%o2)                 - -------------------
1537                          3      2
1538                         x  + 4 x  + 5 x + 2
1539 (%i3) partfrac (%, x);
1540                       2       2        1
1541 (%o3)               ----- - ----- + --------
1542                     x + 2   x + 1          2
1543                                     (x + 1)
1544 @end example
1545 @end deffn
1547 @c --- 05.07.2011 DK -----------------------------------------------------------
1548 @anchor{polydecomp}
1549 @deffn {Funktion} polydecomp (@var{p}, @var{x})
1551 @c Decomposes the polynomial @var{p} in the variable @var{x}
1552 @c into the functional composition of polynomials in @var{x}.
1553 @c @code{polydecomp} returns a list @code{[@var{p_1}, ..., @var{p_n}]} such that
1555 Zerlegt das Polynom @var{p} in der Variablen @var{x} in Polynome, die
1556 miteinander verkettet das urspr@"ungliche Polynom ergeben.  @code{polydecomp}
1557 gibt eine Liste @code{[@var{p_1}, ..., @var{p_n}]} zur@"uck, so dass der
1558 folgende Ausdruck gleich dem Polynom @var{p} ist:
1560 @example
1561 lambda ([x], p_1) (lambda ([x], p_2) (... (lambda ([x], p_n) (x))
1562   ...))
1563 @end example
1565 @c is equal to @var{p}.
1566 @c The degree of @var{p_i} is greater than 1 for @var{i} less than @var{n}.
1568 Der Grad des Polynoms @var{p_i} ist gr@"o@ss{}er als 1 f@"ur @var{i} kleiner
1569 als @var{n}.
1571 @c Such a decomposition is not unique.
1573 Eine solche Zerlegung ist nicht eindeutig.
1575 Beispiele:
1577 @example
1578 (%i1) polydecomp (x^210, x);
1579                           7   5   3   2
1580 (%o1)                   [x , x , x , x ]
1581 (%i2) p : expand (subst (x^3 - x - 1, x, x^2 - a));
1582                 6      4      3    2
1583 (%o2)          x  - 2 x  - 2 x  + x  + 2 x - a + 1
1584 (%i3) polydecomp (p, x);
1585                         2       3
1586 (%o3)                 [x  - a, x  - x - 1]
1587 @end example
1589 @c The following function composes @code{L = [e_1, ..., e_n]} as functions in
1590 @c @code{x}; it is the inverse of polydecomp:
1592 Die folgende Funktion verkettet die Elemente der Liste
1593 @code{L = [e_1, ..., e_n]} zu einer Funktion in der Variablen @var{x}.  Diese
1594 Funktion ist die Inverse Operation zu der Funktion @code{polydecomp}.
1596 @example
1597 compose (L, x) :=
1598   block ([r : x], for e in L do r : subst (e, x, r), r) $
1599 @end example
1601 @c Re-express above example using @code{compose}:
1603 Anwendung der Funktionen @code{compose} und @code{polydecomp}.
1605 @example
1606 (%i3) polydecomp (compose ([x^2 - a, x^3 - x - 1], x), x);
1607                         2       3
1608 (%o3)                 [x  - a, x  - x - 1]
1609 @end example
1611 @c Note that though @code{compose (polydecomp (@var{p}, @var{x}), @var{x})}
1612 @c always returns @var{p} (unexpanded),
1613 @c @code{polydecomp (compose ([@var{p_1}, ..., @var{p_n}], @var{x}), @var{x})}
1614 @c does @i{not} necessarily return @code{[@var{p_1}, ..., @var{p_n}]}:
1616 W@"ahrend  @code{compose (polydecomp (@var{p}, @var{x}), @var{x})} immer das
1617 Polynom @var{p} als Ergebnis hat, hat @code{polydecomp (compose ([@var{p_1},
1618 ..., @var{p_n}], @var{x}), @var{x})} nicht notwendigerweise das Ergebnis
1619 @code{[@var{p_1}, ..., @var{p_n}]}.
1621 @example
1622 (%i4) polydecomp (compose ([x^2 + 2*x + 3, x^2], x), x);
1623                           2       2
1624 (%o4)                   [x  + 2, x  + 1]
1625 (%i5) polydecomp (compose ([x^2 + x + 1, x^2 + x + 1], x), x);
1626 @group
1627                       2       2
1628                      x  + 3  x  + 5
1629 (%o5)               [------, ------, 2 x + 1]
1630                        4       2
1631 @end group
1632 @end example
1633 @end deffn
1635 @c --- 05.07.2011 DK -----------------------------------------------------------
1636 @anchor{polymod}
1637 @deffn  {Funktion} polymod (@var{p})
1638 @deffnx {Funktion} polymod (@var{p}, @var{m})
1640 @c Converts the polynomial @var{p} to a modular representation with respect to 
1641 @c the current modulus which is the value of the variable @code{modulus}.
1643 Konvertiert das Polynom @var{p} in eine modulare Darstellung bez@"uglich
1644 dem aktuellen Modul.  Das Modul ist der Wert der Variablen @code{modulus}.
1646 @c @code{polymod (@var{p}, @var{m})} specifies a modulus @var{m} to be used 
1647 @c instead of the current value of @code{modulus}.
1649 @code{polymod(@var{p}, @var{m}} konvertiert das Polynom bez@"uglich dem Modul 
1650 @var{m}, anstatt dem aktuellen Modul @code{modulus}.
1652 @c See @code{modulus}.
1654 Siehe auch @mrefdot{modulus}
1655 @end deffn
1657 @c --- 30.06.2011 DK -----------------------------------------------------------
1658 @anchor{powers}
1659 @deffn {Funktion} powers (@var{expr}, @var{x})
1661 @c Gives the powers of @var{x} occuring in @var{expr}.
1662 @c @code{load ("powers")} loads this function.
1664 Gibt eine Liste mit den Potenzen der Variablen @var{x} zur@"uck, die im
1665 Ausdruck @var{expr} auftreten.
1667 Mit dem Kommando @code{load("powers")} wird die Funktion geladen.
1669 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
1670 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
1672 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
1673 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
1674 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
1675 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
1676 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
1677 @c 
1678 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
1679 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
1680 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
1681 @c AND MANY OTHER SIMILAR USEFUL HACKS.
1682 @end deffn
1684 @c --- 19.02.2011 DK -----------------------------------------------------------
1685 @anchor{quotient}
1686 @deffn  {Funktion} quotient (@var{p_1}, @var{p_2})
1687 @deffnx {Funktion} quotient (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
1689 Berechnet den Quotienten der Polynome @var{p_1} und @var{p_2} f@"ur die Variable
1690 @var{x_n}.  Die anderen Variablen @var{x_1}, @dots{}, @var{x_n-1} haben dieselbe
1691 Bedeutung wie f@"ur die Funktion @mrefdot{ratvars}
1693 @code{quotient} gibt das erste Element des Ergebnisses der Funktion
1694 @mref{divide} zur@"uck.
1696 Siehe auch die Funktion @mrefdot{remainder}
1698 Beispiel:
1700 @example
1701 (%i1) poly1 : x^3-2*x^2-5*x+7;
1702                         3      2
1703 (%o1)                  x  - 2 x  - 5 x + 7
1704 (%i2) poly2 : x-1;
1705 (%o2)                         x - 1
1706 (%i3) quotient(poly1, poly2, x);
1707                             2
1708 (%o3)                      x  - x - 6
1709 @end example
1710 @end deffn
1712 @c THIS ITEM CAN PROBABLY BE IMPROVED
1714 @c --- 27.11.2011 DK -----------------------------------------------------------
1715 @anchor{rat}
1716 @deffn  {Funktion} rat (@var{expr})
1717 @deffnx {Funktion} rat (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
1719 @c Converts @var{expr} to canonical rational expression (CRE) form by expanding
1720 @c and combining all terms over a common denominator and cancelling out the
1721 @c greatest common divisor of the numerator and denominator, as well as
1722 @c converting floating point numbers to rational numbers within a
1723 @c tolerance of @code{ratepsilon}.
1724 @c The variables are ordered according
1725 @c to the @var{x_1}, ..., @var{x_n}, if specified, as in @code{ratvars}.
1727 Konvertiert einen Ausdruck @var{expr} in die CRE-Form.  Der Ausdruck wird so 
1728 expandiert und gruppiert, dass alle Terme einen gemeinsamen Nenner haben und
1729 der gr@"o@ss{}te gemeinsame Teiler gek@"urzt ist.  Weiterhin werden
1730 Gleitkommazahlen in rationale Zahlungen umgewandelt.  Die Toleranz der
1731 Umwandlung wird von der Optionsvariablen @mref{ratepsilon} kontrolliert.  Die
1732 Variablen im Ausdruck werden entsprechend der Funktion @mref{ratvars}@w{}
1733 gem@"a@ss{} der angegebenen Argumente @var{x_1}, @dots{}, @var{x_n} angeordnet.
1735 @c @code{rat} does not generally simplify functions other than addition
1736 @c @code{+}, subtraction @code{-}, multiplication @code{*}, division @code{/},
1737 @c and exponentiation to an integer power, whereas @code{ratsimp} does handle
1738 @c those cases.  Note that atoms (numbers and variables) in CRE form are not the
1739 @c same as they are in the general form.  For example, @code{rat(x)- x} yields 
1740 @c @code{rat(0)} which has a different internal representation than 0.
1742 @code{rat} vereinfacht im Allgemeinen keine Ausdr@"ucke bis auf die Addition
1743 @code{+}, Subtraktion @code{-}, Multiplikation @code{*}, Division @code{/}
1744 und die Exponentiation @code{^} mit einer ganzen Zahl.  Dagegen f@"uhrt die
1745 Funktion @mref{ratsimp} auch weitere Vereinfachungen aus.  Variablen und Zahlen
1746 in einer CRE-Form sind nicht identisch mit denen in der Standardform.  Zum
1747 Beispiel hat @code{rat(x)- x} das Ergebnis @code{rat(0)}, welches eine 
1748 andere interne Darstellung als @code{0} hat.
1750    @c WHAT'S THIS ABOUT EXACTLY ??
1751 @c When @code{ratfac} is @code{true}, @code{rat} yields a partially factored
1752 @c form for CRE.  During rational operations the expression is maintained as
1753 @c fully factored as possible without an actual call to the factor package.
1754 @c This should always save space and may save some time in some computations.
1756 @c TODO: DEN LETZTEN TEIL NICHT UEBERSETZT
1758 @c The numerator and denominator are still made relatively prime (e.g.
1759 @c @code{rat ((x^2 - 1)^4/(x + 1)^2)} yields @code{(x - 1)^4 (x + 1)^2)},
1760 @c but the factors within each part may not be relatively prime.
1762 Hat die Optionsvariable @mref{ratfac} den Wert @code{true}, wird ein Ausdruck
1763 von der Funktion @code{rat} nur teilweise faktorisiert.  Bei der Ausf@"uhrung
1764 von Operationen wird bleibt der Ausdruck so vollst@"andig als m@"oglich in
1765 seiner faktorisierten Form, ohne dass eine Faktorisierung ausgef@"uhrt wird.
1766 Damit kann Rechenzeit eingespart werden.
1768 @c @code{ratprint} if @code{false} suppresses the printout of the message
1769 @c informing the user of the conversion of floating point numbers to
1770 @c rational numbers.
1772 Hat die Optionsvariable @mref{ratprint} den Wert @code{false}, werden
1773 Meldungen unterdr@"uckt, wenn eine Gleitkommazahl in eine rationale
1774 umgewandelt wird.
1776 @c @code{keepfloat} if @code{true} prevents floating point numbers from being
1777 @c converted to rational numbers.
1779 Hat die Optionsvariable @mref{keepfloat} den Wert @code{true}, werden
1780 Gleitkommazahlen nicht in rationale Zahlen umgewandelt.
1782 @c See also @code{ratexpand} and @code{ratsimp}.
1784 Siehe auch die Funktionen @mref{ratexpand} und @mrefcomma{ratsimp} um
1785 Ausdr@"ucke zu vereinfachen, sowie die Funktion @mrefcomma{ratdisrep} um einen
1786 Ausdruck von einer CRE-Form in eine allgemeine Form zu transformieren.
1788 Beispiele:
1790 @example
1791 (%i1) ((x - 2*y)^4/(x^2 - 4*y^2)^2 + 1)*(y + a)*(2*y + x) /
1792       (4*y^2 + x^2);
1793                                            4
1794                                   (x - 2 y)
1795               (y + a) (2 y + x) (------------ + 1)
1796                                    2      2 2
1797                                  (x  - 4 y )
1798 (%o1)         ------------------------------------
1799                               2    2
1800                            4 y  + x
1801 (%i2) rat (%, y, a, x);
1802 @group
1803                             2 a + 2 y
1804 (%o2)/R/                    ---------
1805                              x + 2 y
1806 @end group
1807 @end example
1808 @end deffn
1810 @c --- 09.07.2011 DK -----------------------------------------------------------
1811 @anchor{ratalgdenom}
1812 @defvr {Optionsvariable} ratalgdenom
1813 Standardwert: @code{true}
1815 @c When @code{ratalgdenom} is @code{true}, allows rationalization of
1816 @c denominators with respect to radicals to take effect.
1817 @c @code{ratalgdenom} has an effect only when canonical rational expressions
1818 @c (CRE) are used in algebraic mode.
1820 Hat die Optionsvariable @code{ratalgdenom} den Wert @code{true}, versucht
1821 Maxima den Nenner beim Auftreten von Wurzeln rational zu machen.
1822 @code{ratalgdenom} wirkt sich nur aus, wenn die Optionsvariable
1823 @mref{algebraic} den Wert @code{true} hat und der Ausdruck in einer CRE-Form
1824 vorliegt.
1826 Beispiele:
1828 @example
1829 (%i1) algebraic:true$
1831 (%i2) ratalgdenom:false$
1833 (%i3) rat(sqrt(3)/sqrt(2));
1834                              sqrt(3)
1835 (%o3)/R/                     -------
1836                              sqrt(2)
1837 (%i4) ratalgdenom:true$
1839 (%i5) rat(sqrt(3)/sqrt(2));
1840                          sqrt(2) sqrt(3)
1841 (%o5)/R/                 ---------------
1842                                 2
1843 (%i6) algebraic:false$
1845 (%i7) rat(sqrt(3)/sqrt(2));
1846                              sqrt(3)
1847 (%o7)/R/                     -------
1848                              sqrt(2)
1849 @end example
1850 @end defvr
1852 @c THIS ITEM NEEDS MORE WORK
1854 @c --- 09.07.2011 DK -----------------------------------------------------------
1855 @anchor{ratcoef}
1856 @deffn  {Funktion} ratcoef (@var{expr}, @var{x}, @var{n})
1857 @deffnx {Funktion} ratcoef (@var{expr}, @var{x})
1859 @c Returns the coefficient of the expression @code{@var{x}^@var{n}}
1860 @c in the expression @var{expr}.
1861 @c If omitted, @var{n} is assumed to be 1.
1863 Gibt den Koeffizienten des Ausdrucks @code{@var{x}^@var{n}} in dem Argument
1864 @var{expr} zur@"uck.  Wenn das Argument @var{n} nicht angegeben ist, wird
1865 der Wert zu @code{1} angenommen.
1867 @c The return value is free
1868 @c (except possibly in a non-rational sense) of the variables in @var{x}.
1869 @c If no coefficient of this type exists, 0 is returned.
1871 Die R@"uckgabe ist frei von der Variablen @var{x}.  Existiert kein Koeffizient
1872 @code{@var{x}^@var{n}} dann ist die R@"uckgabe @code{0}.
1874 @c @code{ratcoef}
1875 @c expands and rationally simplifies its first argument and thus it may
1876 @c produce answers different from those of @code{coeff} which is purely
1877 @c syntactic.
1878    @c MOVE THIS TO EXAMPLES SECTION
1879 @c Thus @code{ratcoef ((x + 1)/y + x, x)} returns @code{(y + 1)/y} whereas
1880 @c @code{coeff} returns 1.
1882 @code{ratcoef} expandiert und vereinfacht das Argument @var{expr}.  Daher kann
1883 @code{ratcoef} ein anderes Ergebnis als die Funktion @mref{coeff} haben, die
1884 keine Vereinfachungen ausf@"uhrt.  Daher @code{ratcoef((x + 1)/y + x, x)} das
1885 Ergebnis @code{(y + 1)/y} und nicht das Ergebnis @code{1} wie es von der
1886 Funktion @code{coeff} zur@"uckgegeben wird.
1888 @c @code{ratcoef (@var{expr}, @var{x}, 0)}, viewing @var{expr} as a sum,
1889 @c returns a sum of those terms which do not contain @var{x}.
1890    @c "SHOULD NOT" -- WHAT DOES THIS MEAN ??
1891 @c Therefore if @var{x} occurs to any negative powers, @code{ratcoef} should not
1892 @c be used.
1894 @code{ratcoef(@var{expr}, @var{x}, 0)} gibt eine Summe der Terme zur@"uck, die
1895 die Variable @var{x} nicht enthalten.
1897    @c WHAT IS THE INTENT HERE ??
1898 @c Since @var{expr} is rationally
1899 @c simplified before it is examined, coefficients may not appear quite
1900 @c the way they were envisioned.
1902 Beispiele:
1904 @example
1905 (%i1) s: a*x + b*x + 5$
1906 (%i2) ratcoef (s, a + b);
1907 (%o2)                           x
1908 @end example
1909 @end deffn
1911 @c --- 09.07.2011 DK -----------------------------------------------------------
1912 @anchor{ratdenom}
1913 @deffn {Funktion} ratdenom (@var{expr})
1915 Gibt den Nenner des Argumentes @var{expr} zur@"uck.  @code{ratdenom} wandelt
1916 den Ausdruck zuerst in eine CRE-Form um und gibt das Ergebnis in einer 
1917 CRE-Form zur@"uck.
1919 Das Argument @var{expr} wird von der Funktion @mref{rat} in eine CRE-Form
1920 gebracht, falls @var{expr} nicht bereits in einer CRE-Form vorliegt.  Diese
1921 Transformation kann den Ausdruck @var{expr} ver@"andern, da alle Terme @"uber
1922 einen gemeinsamen Nenner zusammengefasst werden.
1924 Die Funktion @mref{denom} ist vergleichbar.  @code{denom} wandelt den Ausdruck
1925 jedoch nicht eine CRE-Form um und hat als Ergebnis einen Ausdruck in der
1926 Standardform.  Daher k@"onnen sich die Ergebnisse von @code{ratdenom} und 
1927 @code{denom} voneinander unterscheiden.
1929 Beispiel:
1931 @example
1932 (%i1) expr: expand((x^2+2*x+3)/(x-1));
1933 @group
1934                         2
1935                        x       2 x      3
1936 (%o1)                 ----- + ----- + -----
1937                       x - 1   x - 1   x - 1
1938 @end group
1939 (%i2) ratdenom(expr);
1940 (%o2)/R/                      x - 1
1941 (%i3) denom(expr);
1942 (%o3)                           1
1943 @end example
1944 @end deffn
1946 @c --- 09.07.2011 DK -----------------------------------------------------------
1947 @anchor{ratdenomdivide}
1948 @defvr {Optionsvariable} ratdenomdivide
1949 Standardwert: @code{true}
1951 @c When @code{ratdenomdivide} is @code{true},
1952 @c @code{ratexpand} expands a ratio in which the numerator is a sum 
1953 @c into a sum of ratios,
1954 @c all having a common denominator.
1955 @c Otherwise, @code{ratexpand} collapses a sum of ratios into a single ratio,
1956 @c the numerator of which is the sum of the numerators of each ratio.
1958 Hat die Optionsvariable @code{ratdenomdivide} den Wert @code{true}, expandiert
1959 die Funktion @mref{ratexpand} einen Quotienten der im Z@"ahler eine Summe hat,
1960 in eine Summe der Quotienten.  Ansonsten werden die Terme @"uber einen
1961 gemeinsamen Nenner zusammengefasst.
1963 Beispiele:
1965 @example
1966 (%i1) expr: (x^2 + x + 1)/(y^2 + 7);
1967                             2
1968                            x  + x + 1
1969 (%o1)                      ----------
1970                               2
1971                              y  + 7
1972 (%i2) ratdenomdivide: true$
1973 (%i3) ratexpand (expr);
1974                        2
1975                       x        x        1
1976 (%o3)               ------ + ------ + ------
1977                      2        2        2
1978                     y  + 7   y  + 7   y  + 7
1979 (%i4) ratdenomdivide: false$
1980 (%i5) ratexpand (expr);
1981                             2
1982                            x  + x + 1
1983 (%o5)                      ----------
1984                               2
1985                              y  + 7
1986 (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3);
1987 @group
1988                                      2
1989                            b        a
1990 (%o6)                    ------ + ------
1991                           2        2
1992                          b  + 3   b  + 3
1993 @end group
1994 (%i7) ratexpand (expr2);
1995                                   2
1996                              b + a
1997 (%o7)                        ------
1998                               2
1999                              b  + 3
2000 @end example
2001 @end defvr
2003 @c --- 09.07.2011 DK -----------------------------------------------------------
2004 @anchor{ratdiff}
2005 @deffn {Funktion} ratdiff (@var{expr}, @var{x})
2007 @c Differentiates the rational expression @var{expr} with respect to @var{x}.
2008 @c @var{expr} must be a ratio of polynomials or a polynomial in @var{x}.
2009 @c The argument @var{x} may be a variable or a subexpression of @var{expr}.
2010    @c NOT CLEAR (FROM READING CODE) HOW x OTHER THAN A VARIABLE IS HANDLED --
2011    @c LOOKS LIKE (a+b), 10*(a+b), (a+b)^2 ARE ALL TREATED LIKE (a+b);
2012    @c HOW TO DESCRIBE THAT ??
2014 Differenziert einen rationalen Ausdruck @var{expr} nach der Variablen @var{x}.
2015 @var{expr} muss eine rationale Funktion oder ein Polynom in der Variablen
2016 @var{x} sein.  Das Argument @var{x} kann ein Teilausdruck des Argumentes
2017 @var{expr} sein.
2019 @c The result is equivalent to @code{diff}, although perhaps in a different
2020 @c form.  @code{ratdiff} may be faster than @code{diff}, for rational
2021 @c expressions.
2023 Das Ergebnis ist @"aquivalent zum Ergebnis der Funktion @mrefcomma{diff}@w{}
2024 kann aber eine andere Form haben.  F@"ur rationale Funktionen kann die
2025 Funktion @code{ratdiff} schneller sein.
2027 @c @code{ratdiff} returns a canonical rational expression (CRE) if @code{expr}
2028 @c is a CRE.  Otherwise, @code{ratdiff} returns a general expression.
2030 @code{ratdiff} gibt das Ergebnis in einer CRE-Form zur@"uck, wenn das Argument
2031 in einer CRE-Form vorliegt.  Ansonsten ist das Ergebnis in der Standardform.
2033 @c @code{ratdiff} considers only the dependence of @var{expr} on @var{x},
2034 @c and ignores any dependencies established by @code{depends}.
2036 @code{ratdiff} beachtet nur die Abh@"angigkeit des Ausdrucks von der Variablen
2037 @var{x}.  Abh@"angigkeiten die mit der Funktion @mref{depends} definiert werden,
2038 werden von der Funktion @code{ratdiff} ignoriert.
2040 @c WHAT THIS IS ABOUT -- ratdiff (rat (factor (expr)), x) AND
2041 @c ratdiff (factor (rat (expr)), x) BOTH SUCCEED COMMENTING THIS OUT UNTIL
2042 @c SOMEONE CAN ESTABLISH SOME CRE'S FOR WHICH ratdiff FAILS
2043 @c However, @code{ratdiff} should not be used on factored CRE forms;
2044 @c use @code{diff} instead for such expressions.
2046 Beispiele:
2048 @example
2049 (%i1) expr: (4*x^3 + 10*x - 11)/(x^5 + 5);
2050                            3
2051                         4 x  + 10 x - 11
2052 (%o1)                   ----------------
2053                               5
2054                              x  + 5
2055 (%i2) ratdiff (expr, x);
2056                     7       5       4       2
2057                  8 x  + 40 x  - 55 x  - 60 x  - 50
2058 (%o2)          - ---------------------------------
2059                           10       5
2060                          x   + 10 x  + 25
2061 (%i3) expr: f(x)^3 - f(x)^2 + 7;
2062                          3       2
2063 (%o3)                   f (x) - f (x) + 7
2064 (%i4) ratdiff (expr, f(x));
2065                            2
2066 (%o4)                   3 f (x) - 2 f(x)
2067 (%i5) expr: (a + b)^3 + (a + b)^2;
2068                               3          2
2069 (%o5)                  (b + a)  + (b + a)
2070 (%i6) ratdiff (expr, a + b);
2071 @group
2072                     2                    2
2073 (%o6)            3 b  + (6 a + 2) b + 3 a  + 2 a
2074 @end group
2075 @end example
2076 @end deffn
2078 @c --- 09.07.2011 DK -----------------------------------------------------------
2079 @anchor{ratdisrep}
2080 @deffn {Funktion} ratdisrep (@var{expr})
2082 @c Returns its argument as a general expression.
2083 @c If @var{expr} is a general expression, it is returned unchanged.
2085 Gibt das Argument @var{expr} als einen allgemeinen Ausdruck zur@"uck.  Ist
2086 @var{expr} bereits ein allgemeiner Ausdruck, wird dieser unver@"andert
2087 zur@"uckgegeben.
2089 @c Typically @code{ratdisrep} is called to convert a canonical rational
2090 @c expression (CRE) into a general expression.
2092 @c TODO: FOLGENDE BEMERKUNG NICHT UEBERSETZT
2094    @c NOT REALLY FOND OF YOU-CAN-DO-THIS-YOU-CAN-DO-THAT STATEMENTS
2095 @c This is sometimes convenient if one wishes to stop the "contagion", or
2096 @c use rational functions in non-rational contexts.
2098 Im Allgemeinen wird die Funktion @code{ratdisrep} aufgerufen, um einen
2099 Ausdruck von der CRE-Form in einen allgemeinen Ausdruck umzuwandeln.
2101 @c See also @code{totaldisrep}.
2103 Siehe auch die Funktion @mrefdot{totaldisrep}
2104 @end deffn
2106 @c --- 09.07.2011 DK -----------------------------------------------------------
2107 @anchor{ratexpand}
2108 @deffn  {Funktion} ratexpand (@var{expr})
2109 @deffnx {Optionsvariable} ratexpand
2111 @c Expands @var{expr} by multiplying out products of sums and
2112 @c exponentiated sums, combining fractions over a common denominator,
2113 @c cancelling the greatest common divisor of the numerator and
2114 @c denominator, then splitting the numerator (if a sum) into its
2115 @c respective terms divided by the denominator.
2117 Expandiert das Argument @var{expr} indem Produkte und Potenzen von Summen
2118 ausmultipliziert, Br@"uche @"uber einen gemeinsamen Nenner dargestellt werden
2119 und der gr@"o@ss{}te gemeinsamen Teiler heraus gek@"urzt wird.  Ist der Z@"ahler
2120 eine Summe, wird er in seine Terme aufgespalten, die jeweils durch den Nenner
2121 dividiert werden.
2123 @c The return value of @code{ratexpand} is a general expression,
2124 @c even if @var{expr} is a canonical rational expression (CRE).
2126 Die R@"uckgabe der Funktion @code{ratexpand} ist ein allgemeiner Ausdruck, auch
2127 wenn das Argument @var{expr} ein Ausdruck in der CRE-Form ist.
2129    @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
2130 @c The switch @code{ratexpand} if @code{true} will cause CRE
2131 @c expressions to be fully expanded when they are converted back to
2132 @c general form or displayed, while if it is @code{false} then they will be put
2133 @c into a recursive form.
2134 @c See also @code{ratsimp}.
2136 @c TODO: DIE OPTIONSVARIABLE RATEXPAND HAT KEINEN EINFLUSS AUF DIE VEREINFACHUNG
2137 @c       DER FUNKTION RATEXPAND. BESSER EINEN EIGENEN EINTRAG???
2139 Die Optionsvariable @code{ratexpand} kontrolliert die Vereinfachung der Funktion
2140 @code{ratsimp}.  Hat @code{ratexpand} den Wert @code{true}, wird ein Ausdruck
2141 vollst@"andig ausmultipliziert. Ist der Wert @code{false}, wird der Ausdruck
2142 nur bez@"uglich der Hauptvariablen ausmultipliziert.  Zum Beispiel hat 
2143 @code{ratsimp((x+1)*(y+1))} das Ergebnis @code{x y + y + x + 1}, wenn
2144 @code{ratexpand} den Wert @code{true} hat, ansonsten ist das Ergebnis
2145 @code{(x + 1) y + x + 1}.  Siehe auch die Funktion @mrefdot{ratsimp}
2147 @c When @code{ratdenomdivide} is @code{true},
2148 @c @code{ratexpand} expands a ratio in which the numerator is a sum 
2149 @c into a sum of ratios, all having a common denominator.
2150 @c Otherwise, @code{ratexpand} collapses a sum of ratios into a single ratio,
2151 @c the numerator of which is the sum of the numerators of each ratio.
2153 Hat die Optionsvariable @mref{ratdenomdivide} den Wert @code{true}, expandiert
2154 die Funktion @mref{ratexpand} einen Quotienten der im Z@"ahler eine Summe hat,
2155 in eine Summe der Quotienten.  Ansonsten werden die Terme @"uber einen
2156 gemeinsamen Nenner zusammengefasst.
2158 @c When @code{keepfloat} is @code{true}, prevents floating
2159 @c point numbers from being rationalized when expressions which contain
2160 @c them are converted to canonical rational expression (CRE) form.
2162 Hat die Optionsvariable @mref{keepfloat} den Wert @code{true}, werden
2163 Gleitkommazahlen im Argument @var{expr} nicht in rationale Zahlen umgewandelt,
2164 wenn der Ausdruck in eine CRE-Form umgewandelt wird.
2166 Beispiele:
2168 @example
2169 (%i1) ratexpand ((2*x - 3*y)^3);
2170                      3         2       2        3
2171 (%o1)          - 27 y  + 54 x y  - 36 x  y + 8 x
2172 (%i2) expr: (x - 1)/(x + 1)^2 + 1/(x - 1);
2173 @group
2174                          x - 1       1
2175 (%o2)                   -------- + -----
2176                                2   x - 1
2177                         (x + 1)
2178 @end group
2179 (%i3) expand (expr);
2180                     x              1           1
2181 (%o3)          ------------ - ------------ + -----
2182                 2              2             x - 1
2183                x  + 2 x + 1   x  + 2 x + 1
2184 (%i4) ratexpand (expr);
2185                         2
2186                      2 x                 2
2187 (%o4)           --------------- + ---------------
2188                  3    2            3    2
2189                 x  + x  - x - 1   x  + x  - x - 1
2190 @end example
2191 @end deffn
2193 @c --- 09.07.2011 DK -----------------------------------------------------------
2194 @anchor{ratfac}
2195 @defvr {Optionsvariable} ratfac
2196 Standardwert: @code{false}
2198 @c When @code{ratfac} is @code{true}, canonical rational expressions (CRE) are
2199 @c manipulated in a partially factored form.
2200 @c During rational operations the expression is maintained as fully factored as
2201 @c possible without calling @code{factor}.
2202 @c This should always save space and may save time in some computations.
2204 @c TODO: DAS FOLGENDE NICHT UEBERSETZT
2206 @c The numerator and denominator are made relatively prime, for example
2207 @c @code{rat ((x^2 - 1)^4/(x + 1)^2)} yields @code{(x - 1)^4 (x + 1)^2)},
2208 @c but the factors within each part may not be relatively prime.
2210 Hat die Optionsvariable @code{ratfac} den Wert @code{true}, werden Ausdr@"ucke
2211 in einer CRE-Form nur teilweise faktorisiert.  Bei der Ausf@"uhrung
2212 von Operationen bleibt der Ausdruck so vollst@"andig als m@"oglich in
2213 seiner faktorisierten Form, ohne dass eine Faktorisierung mit der Funktion
2214 @mref{factor} ausgef@"uhrt wird.  Auf diese Weise kann Rechenzeit eingespart
2215 werden.
2217 @c TODO: NICHT UEBERSETZT.  GEHOERT IN DAS KAPITEL TENSOREN?!
2219 @c In the @code{ctensr} (Component Tensor Manipulation) package,
2220 @c Ricci, Einstein, Riemann, and Weyl tensors and the scalar curvature 
2221 @c are factored automatically when @code{ratfac} is @code{true}.
2222 @c @i{@code{ratfac} should only be
2223 @c set for cases where the tensorial components are known to consist of
2224 @c few terms.}
2226 @c The @code{ratfac} and @code{ratweight} schemes are incompatible and may not
2227 @c both be used at the same time.
2229 Der @mref{ratweight}-Mechanismus ist nicht kompatibel mit dem Setzen der
2230 Variablen @code{ratfac}.
2232 @c NEED EXAMPLES HERE
2233 @end defvr
2235 @c --- 09.07.2011 DK -----------------------------------------------------------
2236 @anchor{ratnumer}
2237 @deffn {Funktion} ratnumer (@var{expr})
2239 @c Returns the numerator of @var{expr},
2240 @c after coercing @var{expr} to a canonical rational expression (CRE).
2241 @c The return value is a CRE.
2243 Gibt den Z@"ahler des Argumentes @var{expr} zur@"uck.  @code{ratnumer} wandelt
2244 den Ausdruck zuerst in eine CRE-Form um und gibt das Ergebnis in einer 
2245 CRE-Form zur@"uck.
2247    @c ACTUALLY THE CONVERSION IS CARRIED OUT BY ratf BUT THAT'S WHAT $rat CALLS
2248 @c @var{expr} is coerced to a CRE by @code{rat}
2249 @c if it is not already a CRE.
2250 @c This conversion may change the form of @var{expr} by putting all terms
2251 @c over a common denominator.
2253 Das Argument @var{expr} wird von der Funktion @mref{rat} in eine CRE-Form
2254 gebracht, falls @var{expr} nicht bereits in einer CRE-Form vorliegt.  Diese
2255 Transformation kann den Ausdruck @var{expr} ver@"andern, da alle Terme @"uber
2256 einen gemeinsamen Nenner zusammengefasst werden.
2258 @c @code{num} is similar, but returns an ordinary expression instead of a CRE.
2259 @c Also, @code{num} does not attempt to place all terms over a common
2260 @c denominator, and thus some expressions which are considered ratios by
2261 @c @code{ratnumer} are not considered ratios by @code{num}.
2263 Die Funktion @mref{num} ist vergleichbar.  @code{num} wandelt den Ausdruck
2264 jedoch nicht eine CRE-Form um und hat als Ergebnis einen Ausdruck in der
2265 Standardform.  Daher k@"onnen sich die Ergebnisse von @code{ratnumer} und 
2266 @code{num} voneinander unterscheiden.
2268 @c NEEDS AN EXAMPLE HERE
2269 @end deffn
2271 @c --- 09.07.2011 DK -----------------------------------------------------------
2272 @anchor{ratp}
2273 @deffn {Funktion} ratp (@var{expr})
2275 @c Returns @code{true} if @var{expr} is a canonical rational expression (CRE) or
2276 @c extended CRE, otherwise @code{false}.
2278 Gibt das Ergebnis @code{true} zur@"uck, wenn das Argument @var{expr} in einer
2279 CRE-Form oder einer erweiterten CRE-Form vorliegt.
2281 @c CRE are created by @code{rat} and related functions.
2282 @c Extended CRE are created by @code{taylor} and related functions.
2284 CRE-Formen werden von der Funktion @mref{rat} und verwandten Funktionen erzeugt.
2285 Erweiterte CRE-Formen werden von der Funktion @mref{taylor} und verwandten
2286 Funktionen erzeugt.
2287 @end deffn
2289 @c --- 09.07.2011 DK -----------------------------------------------------------
2290 @anchor{ratprint}
2291 @defvr {Optionsvariable} ratprint
2292 Standardwert: @code{true}
2294 @c When @code{ratprint} is @code{true},
2295 @c a message informing the user of the conversion of floating point numbers
2296 @c to rational numbers is displayed.
2298 Hat die Optionsvariable @code{ratprint} den Wert @code{true}, gibt Maxima eine
2299 Meldung aus, wenn eine Gleitkommazahl in eine rationale Zahl umgewandelt wird.
2301 Beispiel:
2303 @example
2304 (%i1) ratprint:true;
2305 (%o1)                         true
2306 (%i2) rat(0.75*x);
2308 rat: replaced 0.75 by 3/4 = 0.75
2309                                3 x
2310 (%o2)/R/                       ---
2311                                 4
2312 (%i3) ratprint:false;
2313 (%o3)                         false
2314 (%i4) rat(0.75*x);
2315                                3 x
2316 (%o4)/R/                       ---
2317                                 4
2318 @end example
2319 @end defvr
2321 @c --- 09.07.2011 DK -----------------------------------------------------------
2322 @anchor{ratsimp}
2323 @deffn  {Funktion} ratsimp (@var{expr})
2324 @deffnx {Funktion} ratsimp (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
2326 @c Simplifies the expression @var{expr} and all of its subexpressions,
2327 @c including the arguments to non-rational functions.
2328 @c The result is returned as the quotient of two polynomials in a recursive
2329 @c form, that is, the coefficients of the main variable are polynomials in the
2330 @c other variables.  Variables may include non-rational functions
2331 @c (e.g., @code{sin (x^2 + 1)}) and the arguments to any such functions are also
2332 @c rationally simplified.
2334 Vereinfacht den Ausdruck @var{expr} und alle Teilausdr@"ucke, einschlie@ss{}lich
2335 der nicht rationalen Anteile.  Das Ergebnis ist ein Quotient aus zwei Polynomen
2336 in einer rekursiven Form.  In der rekursiven Form ist das Polynom nach der
2337 Hauptvariablen vollst@"andig ausmultipliziert und ein Polynom in allen anderen
2338 Variablen.  Variable k@"onnen auch nicht-rationale Ausdr@"ucke wie
2339 @code{sin(x^2 + 1)} sein.
2341 @c @code{ratsimp (@var{expr}, @var{x_1}, ..., @var{x_n})}
2342 @c enables rational simplification with the
2343 @c specification of variable ordering as in @code{ratvars}.
2345 @code{ratsimp(@var{expr}, @var{x_1}, ..., @var{x_n})} vereinfacht einen Ausdruck
2346 mit einer Ordnung der Variablen wie sie von der Funktion @mref{ratvars}@w{}
2347 definiert wird.
2349 @c When @code{ratsimpexpons} is @code{true}, @code{ratsimp} is applied to the
2350 @c exponents of expressions during simplification.
2352 Hat die Optionsvariable @mref{ratsimpexpons} den Wert @code{true}, wird
2353 @code{ratsimp} auch auf die Exponenten von Ausdr@"ucke angewendet.
2355 @c See also @code{ratexpand}.
2356 @c Note that @code{ratsimp} is affected by some of the
2357 @c flags which affect @code{ratexpand}.
2359 Siehe auch die Funktion @mrefdot{ratexpand}  Die Funktion @code{ratsimp} wird
2360 auch von einigen Schaltern kontrolliert, die Einfluss auf @code{ratexpand}
2361 haben.
2363 Beispiele:
2365 @example
2366 (%i1) sin (x/(x^2 + x)) = exp ((log(x) + 1)^2 - log(x)^2);
2367                                          2      2
2368                    x         (log(x) + 1)  - log (x)
2369 (%o1)        sin(------) = %e
2370                   2
2371                  x  + x
2372 (%i2) ratsimp (%);
2373                              1          2
2374 (%o2)                  sin(-----) = %e x
2375                            x + 1
2376 (%i3) ((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
2377 @group
2378                        3/2
2379                 (x - 1)    - sqrt(x - 1) (x + 1)
2380 (%o3)           --------------------------------
2381                      sqrt((x - 1) (x + 1))
2382 @end group
2383 (%i4) ratsimp (%);
2384 @group
2385                            2 sqrt(x - 1)
2386 (%o4)                    - -------------
2387                                  2
2388                            sqrt(x  - 1)
2389 @end group
2390 (%i5) x^(a + 1/a), ratsimpexpons: true;
2391                                2
2392                               a  + 1
2393                               ------
2394                                 a
2395 (%o5)                        x
2396 @end example
2397 @end deffn
2399 @c --- 09.07.2011 DK -----------------------------------------------------------
2400 @anchor{ratsimpexpons}
2401 @defvr {Optionsvariable} ratsimpexpons
2402 Standardwert: @code{false}
2404 @c When @code{ratsimpexpons} is @code{true}, @code{ratsimp} is applied to the
2405 @c exponents of expressions during simplification.
2407 Hat die Optionsvariable @code{ratsimpexpons} den Wert @code{true}, wird
2408 @code{ratsimp} auch auf die Exponenten von Ausdr@"ucke angewendet.
2410 Beispiel:
2412 @example
2413 (%i1) expr: x^(a+1/a);
2414                              a + 1/a
2415 (%o1)                       x
2416 (%i2) ratsimpexpons: false;
2417 (%o2)                         false
2418 (%i3) ratsimp(expr);
2419                              a + 1/a
2420 (%o3)                       x
2421 (%i4) ratsimpexpons: true;
2422 (%o4)                         true
2423 (%i5) ratsimp(expr);
2424                                2
2425                               a  + 1
2426                               ------
2427                                 a
2428 (%o5)                        x
2429 @end example
2430 @end defvr
2432 @c --- 06.01.2011 DK -----------------------------------------------------------
2433 @anchor{radsubstflag}
2434 @defvr {Optionsvariable} radsubstflag
2435 Standardwert: @code{false}
2437 @c @code{radsubstflag}, if @code{true}, permits @code{ratsubst} to make 
2438 @c substitutions such as @code{u} for @code{sqrt (x)} in @code{x}.
2439 @c When @code{radsubstflag} is @code{true},
2440 @c @code{ratsubst} makes substitutions for radicals in expressions
2441 @c which don't explicitly contain them.
2443 Hat @code{radsubstflag} den Wert @code{true}, werden Wurzeln von der Funktion
2444 @mref{ratsubst} auch dann substituiert, wenn diese nicht explizit im Ausdruck
2445 enthalten sind.
2447 Beispiel:
2449 @example
2450 (%i1) radsubstflag: false$
2451 (%i2) ratsubst (u, sqrt(x), x);
2452 (%o2)                           x
2453 (%i3) radsubstflag: true$
2454 (%i4) ratsubst (u, sqrt(x), x);
2455                                 2
2456 (%o4)                          u
2457 @end example
2458 @end defvr
2460 @c --- 09.07.2011 DK -----------------------------------------------------------
2461 @anchor{ratsubst}
2462 @deffn {Funktion} ratsubst (@var{a}, @var{b}, @var{c})
2464 @c Substitutes @var{a} for @var{b} in @var{c} and returns the resulting
2465 @c expression.
2466    @c "ETC" SUGGESTS THE READER KNOWS WHAT ELSE GOES THERE - NOT LIKELY THE CASE
2467 @c @var{b} may be a sum, product, power, etc.
2469 Substituiert @var{a} f@"ur @var{b} in den Ausdruck @var{c} und gibt das Ergebnis
2470 der Substitution zur@"uck.
2472    @c WHAT, EXACTLY, DOES ratsubst KNOW ??
2473 @c @code{ratsubst} knows something of the meaning of expressions
2474 @c whereas @code{subst} does a purely syntactic substitution.
2475 @c Thus @code{subst (a, x + y, x + y + z)} returns @code{x + y + z}
2476 @c whereas @code{ratsubst} returns @code{z + a}.
2478 Im Unterschied zu @mref{subst} kann @code{ratsubst} auch Teilausdr@"ucke im
2479 Ausdruck @var{c} substituieren.  So hat @code{subst(a, x + y, x + y + z)} das
2480 Ergebnis @code{x + y + z} und @code{ratsubst} das Ergebnis @code{z + a}.
2482 @c When @code{radsubstflag} is @code{true},
2483 @c @code{ratsubst} makes substitutions for radicals in expressions
2484 @c which don't explicitly contain them.
2486 Hat @code{radsubstflag} den Wert @code{true}, werden Wurzeln von der Funktion
2487 @code{ratsubst} auch dann substituiert, wenn diese nicht explizit im Ausdruck
2488 enthalten sind.
2490 Beispiel:
2492 @example
2493 (%i1) ratsubst (a, x*y^2, x^4*y^3 + x^4*y^8);
2494                               3      4
2495 (%o1)                      a x  y + a
2496 (%i2) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1;
2497                4         3         2
2498 (%o2)       cos (x) + cos (x) + cos (x) + cos(x) + 1
2499 (%i3) ratsubst (1 - sin(x)^2, cos(x)^2, %);
2500             4           2                     2
2501 (%o3)    sin (x) - 3 sin (x) + cos(x) (2 - sin (x)) + 3
2502 (%i4) ratsubst (1 - cos(x)^2, sin(x)^2, sin(x)^4);
2503 @group
2504                         4           2
2505 (%o4)                cos (x) - 2 cos (x) + 1
2506 @end group
2507 (%i5) radsubstflag: false$
2508 (%i6) ratsubst (u, sqrt(x), x);
2509 (%o6)                           x
2510 (%i7) radsubstflag: true$
2511 (%i8) ratsubst (u, sqrt(x), x);
2512                                 2
2513 (%o8)                          u
2514 @end example
2515 @end deffn
2517 @c --- 09.07.2011 DK -----------------------------------------------------------
2518 @anchor{ratvars}
2519 @deffn  {Funktion} ratvars (@var{x_1}, @dots{}, @var{x_n})
2520 @deffnx {Funktion} ratvars ()
2521 @deffnx {Systemvariable} ratvars
2523 @c Declares main variables @var{x_1}, ..., @var{x_n} for rational expressions.
2524 @c @var{x_n}, if present in a rational expression, is considered the main
2525 @c variable.  Otherwise, @var{x_[n-1]} is considered the main variable if
2526 @c present, and so on through the preceding variables to @var{x_1}, which is
2527 @c considered the main variable only if none of the succeeding variables are
2528 @c present.
2530 Deklariert die Variablen @var{x_1}, @dots{}, @var{x_n} zu Hauptvariablen einer
2531 rationalen Funktion.  Ist die Variable @var{x_n} in einem Ausdruck vorhanden,
2532 wird diese zur Hauptvariablen.  Ist @var{x_n} nicht im Ausdruck vorhanden, 
2533 wird einer der vorhergehenden Variablen @var{x_i} zur Hauptvariablen.
2535 @c If a variable in a rational expression is not present in the @code{ratvars}
2536 @c list, it is given a lower priority than @var{x_1}.
2538 Eine Variable einer rationalen Funktion, die nicht unter den @var{x_1}, @dots{},
2539 @var{x_n} ist, erh@"alt eine geringe Priorit@"at als @var{x_1}.
2541 @c The arguments to @code{ratvars} can be either variables or non-rational
2542 @c functions such as @code{sin(x)}.
2544 Die Argumente der Funktion @code{ratvars} k@"onnen auch nicht-rationale
2545 Ausdr@"ucke wie @code{sin(x)} sein.
2547 @c The variable @code{ratvars} is a list of the arguments of 
2548 @c the function @code{ratvars} when it was called most recently.
2549 @c Each call to the function @code{ratvars} resets the list.
2550 @c @code{ratvars ()} clears the list.
2552 Die Systemvariable @code{ratvars} enth@"alt die Liste der zuletzt mit der
2553 Funktion @code{ratvars} zu Hauptvariablen erkl@"arten Variablen.  Jeder Aufruf
2554 der Funktion @code{ratvars} setzt diese Liste zur@"uck.  Der Aufruf ohne
2555 Argumente @code{ratvars()} l@"oscht die Systemvariable @code{ratvars}.
2556 @end deffn
2558 @c --- 09.07.2011 DK -----------------------------------------------------------
2559 @anchor{ratweight}
2560 @deffn  {Funktion} ratweight (@var{x_1}, @var{w_1}, @dots{}, @var{x_n}, @var{w_n})
2561 @deffnx {Funktion} ratweight ()
2563 @c Assigns a weight @var{w_i} to the variable @var{x_i}.
2564 @c This causes a term to be replaced by 0 if its weight exceeds the
2565 @c value of the variable @code{ratwtlvl} (default yields no truncation).
2566 @c The weight of a term is the sum of the products of the
2567 @c weight of a variable in the term times its power.
2568 @c For example, the weight of @code{3 x_1^2 x_2} is @code{2 w_1 + w_2}.
2569 @c Truncation according to @code{ratwtlvl} is carried out only when multiplying
2570 @c or exponentiating canonical rational expressions (CRE).
2572 @c @code{ratweight ()} returns the cumulative list of weight assignments.
2574 Weist der Variablen @var{x_i} ein Gewicht @var{w_i} zu.  Hat ein Term einer
2575 rationalen Funktion ein gr@"o@ss{}eres Gewicht als der Wert der Variablen
2576 @mref{ratwtlvl} wird der Term durch @code{0} ersetzt.  Das Gewicht eines Terms
2577 wird anhand der mit @code{ratweight} den Variablen zugewiesenen Gewichte
2578 ermittelt.  Die Gewichte der Variablen in einem Term werden mit der Potenz
2579 der Variablen multipliziert und dann addiert.  Zum Beispiel hat der Term
2580 @code{3 x_1^2 x_2} das Gewicht @code{2 w_1 + w_2}.  Terme die den Wert
2581 von @code{ratwtlvl} @"ubersteigen, werden nur dann entfernt, wenn rationale
2582 Funktionen in einer CRE-Form multipliziert oder potenziert werden.
2584 @code{ratweight()} gibt die Liste der zugewiesenen Gewichte zur@"uck.
2586 @c Note: The @code{ratfac} and @code{ratweight} schemes are incompatible and
2587 @c may not both be used at the same time.
2589 Der @mref{ratweight}-Mechanismus ist nicht kompatibel mit dem Setzen der
2590 Variablen @code{ratfac}.
2592 Beispiele:
2594 @example
2595 (%i1) ratweight (a, 1, b, 1);
2596 (%o1)                     [a, 1, b, 1]
2597 (%i2) expr1: rat(a + b + 1)$
2598 (%i3) expr1^2;
2599                   2                  2
2600 (%o3)/R/         b  + (2 a + 2) b + a  + 2 a + 1
2601 (%i4) ratwtlvl: 1$
2602 (%i5) expr1^2;
2603 (%o5)/R/                  2 b + 2 a + 1
2604 @end example
2605 @end deffn
2607 @c --- 09.07.2011 DK -----------------------------------------------------------
2608 @anchor{ratweights}
2609 @defvr {System variable} ratweights
2610 Standardwert: @code{[]}
2612 @c @code{ratweights} is the list of weights assigned by @code{ratweight}.
2613 @c The list is cumulative:
2614 @c each call to @code{ratweight} places additional items in the list.
2616 Die Systemvariable @code{ratweights} enth@"alt die Liste der Gewichte die
2617 Variablen mit der Funktion @mref{ratweights} zugewiesen sind.
2619    @c DO WE REALLY NEED TO MENTION THIS ??
2620 @c @code{kill (ratweights)} and @code{save (ratweights)} both work as expected.
2622 Die Gewichte k@"onnen mit dem Kommando @code{kill(ratweights)} gel@"oscht
2623 werden.
2624 @end defvr
2626 @c --- 09.07.2011 DK -----------------------------------------------------------
2627 @anchor{ratwtlvl}
2628 @defvr {Optionsvariable} ratwtlvl
2629 Standardwert: @code{false}
2631 @c @code{ratwtlvl} is used in combination with the @code{ratweight}
2632 @c function to control the truncation of canonical rational expressions (CRE).
2633 @c For the default value of @code{false}, no truncation occurs.
2635 Die Optionsvariable wird im Zusammenhang mit den @mref{ratweight}-Mechanismus
2636 genutzt und kontrolliert das Entfernen von Termen einer rationalen Funktion in
2637 einer CRE-Form, wenn deren Gewicht den Wert von @code{ratwtlvl} @"ubersteigt.
2638 Mit dem Standardwert @code{false} werden keine Terme entfernt.
2639 @end defvr
2641 @c --- 19.02.2011 DK -----------------------------------------------------------
2642 @anchor{remainder}
2643 @deffn  {Funktion} remainder (@var{p_1}, @var{p_2})
2644 @deffnx {Funktion} remainder (@var{p_1}, @var{p_2}, @var{x_1}, @dots{}, @var{x_n})
2646 Berechnet den Rest der Polynomdivision von @var{p_1} und @var{p_2} f@"ur die
2647 Variable @var{x_n}.  Die anderen Variablen @var{x_1}, @dots{}, @var{x_n-1}
2648 haben dieselbe Bedeutung wie f@"ur die Funktion @mrefdot{ratvars}
2650 @code{remainder} gibt das zweite Element des Ergebnisses der Funktion
2651 @mref{divide} zur@"uck.
2653 Siehe auch die Funktion @mrefdot{quotient}
2655 Beispiel:
2657 @example
2658 (%i1) poly1 : x^3-2*x^2-5*x+7;
2659                         3      2
2660 (%o1)                  x  - 2 x  - 5 x + 7
2661 (%i2) poly2 : x^2+1;
2662                               2
2663 (%o2)                        x  + 1
2664 (%i3) remainder(poly1, poly2, x);
2665 (%o3)                        9 - 6 x
2666 @end example
2667 @end deffn
2669 @c --- 04.08.2011 DK -----------------------------------------------------------
2670 @anchor{resultant}
2671 @deffn  {Funktion} resultant (@var{p_1}, @var{p_2}, @var{x})
2673 @c Computes the resultant of the two polynomials @var{p_1} and @var{p_2},
2674 @c eliminating the variable @var{x}.  The resultant is a determinant of the
2675 @c coefficients of @var{x} in @var{p_1} and @var{p_2}, which equals zero
2676 @c if and only if @var{p_1} and @var{p_2} have a non-constant factor in common.
2678 Berechnet die Resultante der Polynome @var{p_1} und @var{p_2} und eliminiert
2679 die unabh@"angige Variable @var{x}.  Die Resultante ist die Determinante der
2680 Sylvestermatrix f@"ur die beiden Polynome.  Das Ergebnis ist Null, wenn die
2681 beiden Polynome @var{p_1} und @var{p_2} einen gemeinsamen Faktor haben.
2683 @c If @var{p_1} or @var{p_2} can be factored, it may be desirable to call
2684 @c @code{factor} before calling @code{resultant}.
2686 K@"onnen die Polynome @var{p_1} oder @var{p_2} faktorisiert werden, kann es
2687 von Vorteil sein, die Faktorisierung zuvor auszuf@"uhren.
2689 @c The variable @code{resultant} controls which algorithm will be used to
2690 @c compute the resultant.
2691 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
2692 @c @code{subres} for subresultant prs, @code{mod} for modular resultant
2693 @c algorithm, and @code{red} for reduced prs. On most problems @code{subres}
2694 @c should be best. On some large degree univariate or bivariate problems 
2695 @c @code{mod} may be better.
2697 Die Optionsvariable @code{resultant} kontrolliert, welcher Algorithmus f@"ur
2698 die Berechnung der Resultante von Maxima genutzt wird.  Siehe die 
2699 Optionsvariable @mxrefdot{option_resultant, resultant}
2701 @c The function @code{bezout} takes the same arguments as @code{resultant} and
2702 @c returns a matrix.  The determinant of the return value is the desired 
2703 @c resultant.
2705 Die Funktion @mref{bezout} berechnet die Sylvestermatrix der Polynome
2706 @var{p_1} und @var{p_2}.  Die Determinante der Sylvestermatrix ist die
2707 Resultante.
2709 @need 800
2710 Beispiele:
2712 @example
2713 (%i1) resultant(2*x^2+3*x+1, 2*x^2+x+1, x);
2714 (%o1)                           8
2715 (%i2) resultant(x+1, x+1, x);
2716 (%o2)                           0
2717 (%i3) resultant((x+1)*x, (x+1), x);
2718 (%o3)                           0
2719 (%i4) resultant(a*x^2+b*x+1, c*x + 2, x);
2720                          2
2721 (%o4)                   c  - 2 b c + 4 a
2723 (%i5) bezout(a*x^2+b*x+1, c*x+2, x);
2724                         [ 2 a  2 b - c ]
2725 (%o5)                   [              ]
2726                         [  c      2    ]
2727 (%i6) determinant(%);
2728 (%o6)                   4 a - (2 b - c) c
2729 @end example
2730 @end deffn
2732 @c --- 04.08.2011 DK -----------------------------------------------------------
2733 @anchor{option_resultant}
2734 @defvr {Optionsvariable} resultant
2735 Standardwert: @code{subres}
2737 @c The variable @code{resultant} controls which algorithm will be used to
2738 @c compute the resultant.
2739 @c WHAT DOES THE FOLLOWING MEAN EXACTLY ??
2740 @c @code{subres} for subresultant prs, @code{mod} for modular resultant
2741 @c algorithm, and @code{red} for reduced prs. On most problems @code{subres}
2742 @c should be best. On some large degree univariate or bivariate problems 
2743 @c @code{mod} may be better.
2745 Die Optionsvariable @code{resultant} kontrolliert, welcher Algorithmus f@"ur die
2746 Berechnung der Resultante mit der Funktion @mref{resultant} von Maxima genutzt
2747 wird.  Die m@"oglichen Werte sind:
2749 @table @code
2750 @item subres
2751 Subresultanten-Algorithmus
2752 @item mod
2753 Modularer Resultanten-Algorithmus
2754 @item red
2755 Reduzierter Subresultanten-Algorithmus
2756 @end table
2758 Der Standwert @code{subres} ist f@"ur die meisten Probleme geeignet.  F@"ur
2759 gro@ss{}e Polynome in einer oder zwei Variablen kann @code{mod} besser sein.
2760 @end defvr
2762 @c -----------------------------------------------------------------------------
2763 @need 1000
2764 @anchor{savefactors}
2765 @defvr {Optionsvariable} savefactors
2766 Standardwert: @code{false}
2768 @c "certain functions" -- WHICH ONES ??
2769 @c When @code{savefactors} is @code{true}, causes the factors of an
2770 @c expression which is a product of factors to be saved by certain
2771 @c functions in order to speed up later factorizations of expressions
2772 @c containing some of the same factors.
2774 Hat die Optionsvariable @code{savefactors} den Wert @code{true}, versuchen
2775 einige Funktionen bei der Vereinfachung eine bereits vorhandene Faktorisierung
2776 zu erhalten, um weitere Vereinfachungen zu beschleunigen.
2777 @end defvr
2779 @c --- 06.07.2011 DK -----------------------------------------------------------
2780 @anchor{showratvars}
2781 @deffn {Funktion} showratvars (@var{expr})
2783 @c Returns a list of the canonical rational expression (CRE) variables in 
2784 @c expression @code{expr}.
2785 @c See also @code{ratvars}.
2787 Gibt eine Liste mit den Variablen des Ausdrucks @var{expr} zur@"uck.  Der
2788 Ausdruck liegt in einer CRE-Form vor.
2790 Siehe auch die Funktion @mrefdot{ratvars}
2791 @end deffn
2793 @c I CAN'T TELL WHAT THIS IS SUPPOSED TO BE ABOUT
2795 @c --- 06.07.2011 DK -----------------------------------------------------------
2796 @anchor{sqfr}
2797 @deffn {Funktion} sqfr (@var{expr})
2799 @c is similar to @code{factor} except that the polynomial factors are
2800 @c "square-free."
2802 @c TODO: ERLAEUTERUNG QUADRATFREI NICHT UEBERSETZT
2804 @c That is, they have factors only of degree one.  This algorithm, which is also
2805 @c used by the first stage of @code{factor}, utilizes the fact that a polynomial
2806 @c has in common with its n'th derivative all its factors of degree greater than
2807 @c n.  Thus by taking greatest common divisors with the polynomial of the
2808 @c derivatives with respect to each variable in the polynomial, all factors of
2809 @c degree greater than 1 can be found.
2811 Entspricht der Funktion @mref{factor} mit dem Unterschied, dass faktorisierte
2812 Polynome quadratfrei sind.
2814 @need 800
2815 Beispiel:
2817 @example
2818 (%i1) sqfr (4*x^4 + 4*x^3 - 3*x^2 - 4*x - 1);
2819                                 2   2
2820 (%o1)                  (2 x + 1)  (x  - 1)
2821 @end example
2822 @end deffn
2824 @c THIS ITEM STILL NEEDS WORK
2826 @c --- 20.12.2010 DK -----------------------------------------------------------
2827 @anchor{tellrat}
2828 @deffn  {Funktion} tellrat (@var{p_1}, @dots{}, @var{p_n})
2829 @deffnx {Funktion} tellrat ()
2831 @c Adds to the ring of algebraic integers known to Maxima the elements which are
2832 @c the solutions of the polynomials @var{p_1}, ..., @var{p_n}.  Each argument
2833 @c @var{p_i} is a polynomial with integer coefficients.
2835 F@"ugt dem Ring der ganzen Zahlen, die algebraische Zahlen hinzu, die L@"osungen
2836 der minimalen Polynome @var{p_1}, @dots{}, @var{p_n} sind.  Jedes Argument
2837 @var{p_i} ist ein Polynom, dessen Koeffizienten ganze Zahlen sind.
2839 @c @code{tellrat (@var{x})} effectively means substitute 0 for @var{x} in
2840 @c rational functions.
2842 @code{tellrat(@var{x})} bedeutet, dass in einer rationalen Funktion die
2843 Variable @var{x} mit dem Wert @code{0} substituiert wird.
2845 @c @code{tellrat ()} returns a list of the current substitutions.
2847 @code{tellrat()} gibt eine Liste der minimalen Polynome zur@"uck.
2849 @c @code{algebraic} must be set to @code{true} in order for the simplification
2850 @c of algebraic integers to take effect.
2852 Die Optionsvariable @mref{algebraic} muss den Wert @code{true} haben, damit
2853 die Vereinfachungen von algebraischen Zahlen ausgef@"uhrt wird.
2855 @c Maxima initially knows about the imaginary unit @code{%i} and all roots of 
2856 @c integers.
2858 Maxima kennt bereits die Erweiterungen um die Imagin@"are Einheit @code{%i} und
2859 die Wurzeln der ganzen Zahlen.
2861 @c There is a command @code{untellrat} which takes kernels and removes
2862 @c @code{tellrat} properties.
2864 Die Funktion @mref{untellrat} entfernt die Eigenschaften, die mit der Funktion
2865 @code{tellrat} definiert wurden.
2867 @c When @code{tellrat}'ing a multivariate polynomial, e.g.,
2868 @c @code{tellrat (x^2 - y^2)}, there would be an ambiguity as to whether to
2869 @c substitute @code{@var{y}^2} for @code{@var{x}^2} or vice versa.  Maxima 
2870 @c picks a particular ordering, but if the user wants to specify which, e.g.
2871 @c @code{tellrat (y^2 = x^2)} provides a syntax which says replace
2872 @c @code{@var{y}^2} by @code{@var{x}^2}.
2874 Hat ein minimales Polynom mehrere Variablen, wie zum Beispiel in
2875 @code{tellrat(x^2 - y^2)}, dann entsteht eine Mehrdeutigkeit, da Maxima nicht
2876 ermitteln kann, ob @var{x^2} f@"ur @var{y^2} zu ersetzten ist, oder umgekehrt.
2877 In diesem Fall kann die Syntax @code{tellrat (y^2 = x^2)} genutzt werden, die
2878 besagt, dass @var{y^2} durch @var{x^2} zu ersetzen ist.
2880 @c CAN'T TELL WHAT THIS IS ABOUT -- 
2881 @c tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w));
2882 @c DOES NOT YIELD AN ERROR, SO WHAT IS THE POINT ABOUT ratalgdenom ??
2883 @c When you @code{tellrat} reducible polynomials, you want to be careful not to
2884 @c attempt to rationalize a denominator with a zero divisor.  E.g.
2885 @c tellrat(w^3-1)$ algebraic:true$ rat(1/(w^2-w)); will give "quotient by
2886 @c zero".  This error can be avoided by setting @code{ratalgdenom} to 
2887 @c @code{false}.
2889 Beispiele:
2891 @example
2892 (%i1) 10*(%i + 1)/(%i + 3^(1/3));
2893 @group
2894                            10 (%i + 1)
2895 (%o1)                      -----------
2896                                   1/3
2897                             %i + 3
2898 @end group
2899 (%i2) ev (ratdisrep (rat(%)), algebraic);
2900 @group
2901              2/3      1/3              2/3      1/3
2902 (%o2)    (4 3    - 2 3    - 4) %i + 2 3    + 4 3    - 2
2903 @end group
2904 (%i3) tellrat (1 + a + a^2);
2905                             2
2906 (%o3)                     [a  + a + 1]
2907 (%i4) 1/(a*sqrt(2) - 1) + a/(sqrt(3) + sqrt(2));
2908                       1                 a
2909 (%o4)           ------------- + -----------------
2910                 sqrt(2) a - 1   sqrt(3) + sqrt(2)
2911 (%i5) ev (ratdisrep (rat(%)), algebraic);
2912          (7 sqrt(3) - 10 sqrt(2) + 2) a - 2 sqrt(2) - 1
2913 (%o5)    ----------------------------------------------
2914                                7
2915 (%i6) tellrat (y^2 = x^2);
2916                         2    2   2
2917 (%o6)                 [y  - x , a  + a + 1]
2918 @end example
2919 @end deffn
2921 @c --- 20.10.2010 DK -----------------------------------------------------------
2922 @anchor{totaldisrep}
2923 @deffn {Funktion} totaldisrep (@var{expr})
2925 @c Converts every subexpression of @var{expr} from canonical rational 
2926 @c expressions (CRE) to general form and returns the result. If @var{expr} is 
2927 @c itself in CRE form then @code{totaldisrep} is identical to @code{ratdisrep}.
2929 Konvertiert alle Teilausdr@"ucke im Ausdruck @var{expr} von der CRE-Form in die
2930 allgemeine Form und gibt das Ergebnis zur@"uck.  Ist @var{expr} selbst eine
2931 CRE-Form, dann entspricht @code{totaldisrep} der Funktion @code{ratdisrep}.
2933 @c @code{totaldisrep} may be useful for ratdisrepping expressions such as 
2934 @c equations, lists, matrices, etc., which have some subexpressions in CRE form.
2936 @code{totaldisrep} ist insbesondere hilfreich, wenn Gleichungen, Listen oder
2937 Matrizen in eine allgemeine Form zu konvertieren sind.
2939 @c NEED EXAMPLES HERE
2940 @end deffn
2942 @c --- 20.12.2010 DK -----------------------------------------------------------
2943 @anchor{untellrat}
2944 @deffn {Funktion} untellrat (@var{x_1}, @dots{}, @var{x_n})
2946 @c Removes @code{tellrat} properties from @var{x_1}, ..., @var{x_n}.
2948 Entfernt Eigenschaften von den Symbolen @var{x_1}, @dots{}, @var{x_n}, die mit
2949 der Funktion @code{tellrat} zugewiesen wurden.
2951 @c NEED EXAMPLES HERE
2952 @end deffn
2954 @c --- End of file Polynomials.de.texi -----------------------------------------