1This is maxima.info, produced by makeinfo version 6.6 from maxima.texi.
2
3Das ist ein Texinfo Maxima Manual
4
5   Copyright 1994,2001 William F. Schelter
6
7START-INFO-DIR-ENTRY
8* Maxima: (maxima).     Ein Computer Algebra System.
9END-INFO-DIR-ENTRY
10
11
12File: maxima.info,  Node: Nutzerdefinierte Operatoren,  Prev: Zuweisungsoperatoren,  Up: Operatoren
13
147.7 Nutzerdefinierte Operatoren
15===============================
16
17* Menu:
18
19* Einf�hrung in nutzerdefinierte Operatoren::
20* Funktionen und Variablen f�r nutzerdefinierte Operatoren::
21
22
23File: maxima.info,  Node: Einf�hrung in nutzerdefinierte Operatoren,  Next: Funktionen und Variablen f�r nutzerdefinierte Operatoren,  Prev: Nutzerdefinierte Operatoren,  Up: Nutzerdefinierte Operatoren
24
257.7.1 Einf�hrung in nutzerdefinierte Operatoren
26-----------------------------------------------
27
28Es ist m�glich neue Operatoren zu definieren, vorhandene Operatoren zu
29entfernen oder deren Eigenschaften zu �ndern.  Jede Funktion kann als
30ein Operator definiert werden, die Funktion kann, muss aber nicht
31definiert sein.
32
33Im Folgenden werden die Operatoren 'dd' und '"<-"' definiert.  Nach der
34Definition als Operatoren ist 'dd a' gleichbedeutend mit '"dd"(a)' und
35'a <- b' entspricht dem Funktionsaufruf '"<-"(a,b)'.  In diesem Beispiel
36sind die Funktionen '"dd"' und '"<-"' nicht definiert.
37
38     (%i1) prefix ("dd");
39     (%o1)                          dd
40     (%i2) dd a;
41     (%o2)                         dd a
42     (%i3) "dd" (a);
43     (%o3)                         dd a
44     (%i4) infix ("<-");
45     (%o4)                          <-
46     (%i5) a <- dd b;
47     (%o5)                      a <- dd b
48     (%i6) "<-" (a, "dd" (b));
49     (%o6)                      a <- dd b
50
51Maxima kennt die folgenden Funktionen, um Operatoren zu definieren:
52'prefix', 'postfix', 'infix', 'nary', 'matchfix' und 'nofix'.
53
54Der Vorrang eines Operators <op> vor anderen Operatoren leitet sich aus
55dem links- und rechtsseitigen Vorrang des Operators ab.  Sind die links-
56und rechtsseitigen Vorr�nge von <op> beide gr��er als der links- und
57rechtsseitige Vorrang eines anderen Operators, dann hat <op> Vorrang vor
58diesem Operator.  Sind die Vorr�nge nicht beide gr��er oder kleiner,
59werden weitere Regeln zur Bestimmung des Vorrangs herangezogen.
60
61Maxima kennt die Wortart eines Operanden und des Ergebnisses eines
62Operanden.  Wortart bedeutet hier, den Typ eines Operanden.  Maxima
63kennt die drei Typen 'expr', 'clause' und 'any'.  Diese stehen f�r einen
64algebraischen Ausdruck, einen logischen Ausdruck und einen beliebigen
65Ausdruck.  Mit Hilfe der f�r einen Operator definierten Wortart kann der
66Parser beim Einlesen eines Ausdrucks Syntaxfehler feststellen.
67
68Die Assoziativit�t eines Operators <op> h�ngt ab von seinem Vorrang.
69Ein gr��erer linksseitiger Vorrang hat zur Folge, dass der Operator <op>
70vor einem anderen Operator auf seiner linken Seite ausgewertet wird.
71W�hrend ein gr��erer rechtsseitiger Vorrang zur Folge hat, dass der
72Operator vor anderen Operatoren auf der rechten Seite ausgewertet wird.
73Daraus folgt, dass ein gr��erer linksseitiger Vorrang <lbp> einen
74Operator <op> rechts-assoziativ und eine gr��erer rechtsseitiger Vorrang
75<rbp> den Operator links-assoziativ macht.  Sind der links- und
76rechtsseitige Vorrang gleich gro�, ist der Operator <op>
77links-assoziativ.
78
79Mit den Befehlen 'remove' und 'kill' k�nnen Operatoreigenschaften von
80einem Symbol entfernt werden.  'remove("<a>", op)' entfernt die
81Operatoreigenschaften des Symbols <a>.  'kill("<a>")' entfernt alle
82Eigenschaften einschlie�ich der Operator-Eigenschaften des Symbols <a>.
83In diesem Fall steht der Name des Symbols in Anf�hrungszeichen.
84
85     (%i1) infix ("##");
86     (%o1)                          ##
87     (%i2) "##" (a, b) := a^b;
88                                          b
89     (%o2)                     a ## b := a
90     (%i3) 5 ## 3;
91     (%o3)                          125
92     (%i4) remove ("##", op);
93     (%o4)                         done
94     (%i5) 5 ## 3;
95     Incorrect syntax: # is not a prefix operator
96     5 ##
97       ^
98     (%i5) "##" (5, 3);
99     (%o5)                          125
100     (%i6) infix ("##");
101     (%o6)                          ##
102     (%i7) 5 ## 3;
103     (%o7)                          125
104     (%i8) kill ("##");
105     (%o8)                         done
106     (%i9) 5 ## 3;
107     Incorrect syntax: # is not a prefix operator
108     5 ##
109       ^
110     (%i9) "##" (5, 3);
111     (%o9)                       ##(5, 3)
112
113
114File: maxima.info,  Node: Funktionen und Variablen f�r nutzerdefinierte Operatoren,  Prev: Einf�hrung in nutzerdefinierte Operatoren,  Up: Nutzerdefinierte Operatoren
115
1167.7.2 Funktionen und Variablen f�r nutzerdefinierte Operatoren
117--------------------------------------------------------------
118
119 -- Funktion: infix (<op>)
120 -- Funktion: infix (<op>, <lbp>, <rbp>)
121 -- Funktion: infix (<op>, <lbp>, <rbp>, <lpos>, <rpos>, <pos>)
122
123     Deklariert <op> als einen Infix-Operator.  Ein Infix-Operator hat
124     eine Funktionsdefinition mit zwei Argumenten.  Der Infix-Operator
125     steht zwischen den Operanden.  Zum Beispiel ist die Subtraktion '-'
126     ein Infix-Operator.
127
128     'infix(<op>)' deklariert <op> als einen Infix-Operator mit einem
129     links- und rechtsseitigen Vorrang von jeweils 180.
130
131     'infix(<op>, <lbp>, <rbp>)' deklariert <op> als einen
132     Infix-Operator mit den angegebenen Werten f�r den links- und
133     rechtsseitigen Vorrang.
134
135     'infix(<op>, <lbp>, <rbp>, <lpos>, <rpos>, <pos>)' deklariert <op>
136     als einen Infix-Operator mit den angegebenen Vorr�ngen sowie den
137     Wortarten <lpos>, <rpos> und <pos> f�r den linken und den rechten
138     Operanden sowie das Ergebnis des Operators.
139
140     Beispiele:
141
142     Sind die rechtsseitigen und linksseitigen Vorr�nge eines Operators
143     <op> gr��er als die entsprechenden Vorr�nge eines anderen
144     Operators, dann hat der Operator <op> Vorrang.
145
146          (%i1) :lisp (get '$+ 'lbp)
147          100
148          (%i1) :lisp (get '$+ 'rbp)
149          100
150          (%i1) infix ("##", 101, 101);
151          (%o1)                          ##
152          (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")");
153          (%o2)       (a ## b) := sconcat("(", a, ",", b, ")")
154          (%i3) 1 + a ## b + 2;
155          (%o3)                       (a,b) + 3
156          (%i4) infix ("##", 99, 99);
157          (%o4)                          ##
158          (%i5) 1 + a ## b + 2;
159          (%o5)                       (a+1,b+2)
160
161     Ein gr��erer linksseitige Vorrang <lbp> bewirkt, dass der Operator
162     <op> rechts-assoziativ ist.  Ein gr��erer rechtsseitiger Vorrang
163     macht dagegen den Operator <op> links-assoziativ.
164
165          (%i1) infix ("##", 100, 99);
166          (%o1)                          ##
167          (%i2) "##"(a, b) := sconcat("(", a, ",", b, ")")$
168          (%i3) foo ## bar ## baz;
169          (%o3)                    (foo,(bar,baz))
170          (%i4) infix ("##", 100, 101);
171          (%o4)                          ##
172          (%i5) foo ## bar ## baz;
173          (%o5)                    ((foo,bar),baz)
174
175     Maxima kann Syntaxfehler beim Einlesen eines Ausdrucks feststellen,
176     wenn der eingelesene Operand nicht die f�r den Operator definierte
177     Wortart hat.
178
179          (%i1) infix ("##", 100, 99, expr, expr, expr);
180          (%o1)                          ##
181          (%i2) if x ## y then 1 else 0;
182          Incorrect syntax: Found algebraic expression where
183          logical expression expected
184          if x ## y then
185                       ^
186          (%i2) infix ("##", 100, 99, expr, expr, clause);
187          (%o2)                          ##
188          (%i3) if x ## y then 1 else 0;
189          (%o3)                if x ## y then 1 else 0
190
191 -- Funktion: matchfix (<ldelimiter>, <rdelimiter>)
192 -- Funktion: matchfix (<ldelimiter>, <rdelimiter>, <arg_pos>, <pos>)
193
194     Deklariert einen Matchfix-Operator mit dem linksseitigen
195     Begrenzungszeichen <ldelimiter> und dem rechtsseitigen
196     Begrenzungszeichen <rdelimiter>.
197
198     Ein Matchfix-Operator hat eine beliebige Anzahl an Argumenten, die
199     zwischen dem linksseitigen und dem rechtsseitigen
200     Begrenzungszeichen stehen.  Das Begrenzungszeichen kann eine
201     beliebige Zeichenkette sein.  Einige Zeichen wie '%', ',', '$' und
202     ';' k�nnen nicht als Begrenzungszeichen definiert werden.
203
204     Ein linksseitiges Begrenzungszeichen kann nicht verschiedene
205     rechtsseitige Begrenzungszeichen haben.
206
207     Maxima-Operatoren k�nnen als Matchfix-Operatoren definiert werden,
208     ohne dass sich die sonstigen Operatoreigenschaften �ndern.  So kann
209     zum Beispiel der Operator '+' als Matchfix-Operator definiert
210     werden.
211
212     'matchfix(<ldelimiter>, <rdelimiter>, <arg_pos>, <pos>)' definiert
213     die Wortarten f�r die Argumente <arg_pos> und das Ergebnis <pos>
214     sowie das linksseitige <ldelimiter> und rechtsseitige <rdelimiter>
215     Begrenzungszeichen.
216
217     Die zu einem Matchfix-Operator zugeh�rige Funktion kann jede
218     nutzerdefinierte Funktion sein, die mit ':=' oder 'define'
219     definiert wird.  Die Definition der Funktion kann mit
220     'dispfun(<ldelimiter>)' ausgegeben werden.
221
222     Maxima kennt nur den Operator f�r Listen '[ ]' als
223     Matchfix-Operator.  Klammern '( )' und Anf�hrungszeichen '" "'
224     arbeiten wie Matchfix-Operatoren, werden aber vom Parser nicht als
225     Matchfix-Operatoren behandelt.
226
227     'matchfix' wertet die Argumente aus.  'matchfix' gibt das erste
228     Argument <ldelimiter> als Ergebnis zur�ck.
229
230     Beispiele:
231
232     Begrenzungszeichen k�nnen eine beliebige Zeichenkette sein.
233
234          (%i1) matchfix ("@@", "~");
235          (%o1)                          @@
236          (%i2) @@ a, b, c ~;
237          (%o2)                      @@a, b, c~
238          (%i3) matchfix (">>", "<<");
239          (%o3)                          >>
240          (%i4) >> a, b, c <<;
241          (%o4)                      >>a, b, c<<
242          (%i5) matchfix ("foo", "oof");
243          (%o5)                          foo
244          (%i6) foo a, b, c oof;
245          (%o6)                     fooa, b, coof
246          (%i7) >> w + foo x, y oof + z << / @@ p, q ~;
247                               >>z + foox, yoof + w<<
248          (%o7)                ----------------------
249                                      @@p, q~
250
251     Matchfix-Operatoren k�nnen f�r nutzerdefinierte Funktionen
252     definiert werden.
253
254          (%i1) matchfix ("!-", "-!");
255          (%o1)                         "!-"
256          (%i2) !- x, y -! := x/y - y/x;
257                                              x   y
258          (%o2)                   !-x, y-! := - - -
259                                              y   x
260          (%i3) define (!-x, y-!, x/y - y/x);
261                                              x   y
262          (%o3)                   !-x, y-! := - - -
263                                              y   x
264          (%i4) define ("!-" (x, y), x/y - y/x);
265                                              x   y
266          (%o4)                   !-x, y-! := - - -
267                                              y   x
268          (%i5) dispfun ("!-");
269                                              x   y
270          (%t5)                   !-x, y-! := - - -
271                                              y   x
272
273          (%o5)                         done
274          (%i6) !-3, 5-!;
275                                          16
276          (%o6)                         - --
277                                          15
278          (%i7) "!-" (3, 5);
279                                          16
280          (%o7)                         - --
281                                          15
282
283 -- Funktion: nary (<op>)
284 -- Funktion: nary (<op>, <bp>, <arg_pos>, <pos>)
285
286     'nary(<op>)' definiert einen 'N-ary'-Operator <op> mit einem
287     linksseitigen Vorrang von 180.  Der rechtsseitige Vorrang wird
288     nicht ben�tigt.
289
290     'nary(<op>, <bp>, <arg_pos>, <pos>)' definiert einen
291     'N-ary'-Operator <op> mit einem rechtsseitigen Vorrang von <bp> und
292     der Wortart <arg_pos> f�r den Operanden und der Wortart <pos> für
293     das Ergebnis.
294
295     Ein 'N-ary'-Operator ist ein Operator, der eine beliebige Anzahl an
296     Argumenten haben kann.  Die Argumente werden durch den Operator
297     voneinander getrennt, so ist zum Beispiel '+' ein 'N-ary'-Operator
298     und 'A+B+C'.
299
300     Im Unterschied zur Definition eines Operators kann eine Funktion
301     'f' auch als 'nary' mit der Funktion 'declare' deklariert werden.
302     Die Deklaration hat Auswirkung auf die Vereinfachung der Funktion.
303     Zum Beispiel wird ein Ausdruck 'j(j(a,b),j(c,d)' zu 'j(a,b,c,d)'
304     vereinfacht.
305
306 -- Funktion: nofix (<op>)
307 -- Funktion: nofix (<op>, <pos>)
308
309     'nofix(<op>)' definiert den Operator <op> als einen Nofix-Operator.
310
311     'nofix(<op>, <pos>)' definiert einen Nofix-Operator mit der Wortart
312     <pos> f�r das Ergebnis.
313
314     Nofix-Operatoren sind Operatoren, die kein Argument haben.  Tritt
315     ein solcher Operator allein auf, wird die dazugeh�rige Funktion
316     ausgewertet.  Zum Beispiel beendet die Funktion 'quit()' eine
317     Maxima-Sitzung.  Wird diese Funktion mit 'nofix("quit")' als ein
318     Nofix-Operator definiert, gen�gt die Eingabe von 'quit', um eine
319     Maxima-Sitzung zu beenden.
320
321 -- Funktion: postfix (<op>)
322 -- Funktion: postfix (<op>, <lbp>, <lpos>, <pos>)
323
324     'postfix (<op>)' definiert einen Postfix-Operator <op>.
325
326     'postfix (<op>, <lbp>, <lpos>, <pos>)' definiert einen
327     Postfix-Operator <op> mit einem linksseitigem Vorrang von <lbp>
328     sowie den Wortarten <lpos> f�r den Operanden und <pos> f�r das
329     Ergebnis.
330
331     Ein Postfix-Operator hat einen Operanden, der dem Operator
332     vorangestellt ist.  Ein Beispiel ist der '!'-Operator mit '3!'.
333     Die Funktion 'postfix("x")' erweitert die Maxima-Syntax um den
334     Postfix-Operator 'x'.
335
336 -- Funktion: prefix (<op>)
337 -- Funktion: prefix (<op>, <rbp>, <rpos>, <pos>)
338
339     'prefix (<op>)' definiert einen Prefix-Operator <op>.
340
341     'prefix (<op>, <lbp>, <lpos>, <pos>)' definiert einen
342     Prefix-Operator <op> mit einem rechtsseitigem Vorrang von <rbp>
343     sowie den Wortarten <rpos> f�r den Operanden und <pos> f�r das
344     Ergebnis.
345
346     Ein Prefix-Operator hat einen Operanden, der dem Operator
347     nachfolgt.  Mit 'prefix("x")' wird die Maxima-Syntax um einen
348     Prefix-Operator 'x' erweitert.
349
350
351File: maxima.info,  Node: Auswertung,  Next: Vereinfachung,  Prev: Operatoren,  Up: Top
352
3538 Auswertung
354************
355
356* Menu:
357
358* Einf�hrung in die Auswertung::
359* Funktionen und Variablen f�r die Auswertung::
360
361
362File: maxima.info,  Node: Einf�hrung in die Auswertung,  Next: Funktionen und Variablen f�r die Auswertung,  Prev: Auswertung,  Up: Auswertung
363
3648.1 Einf�hrung in die Auswertung
365================================
366
367In *note Einf�hrung in die Kommandozeile:: sind die vier Phasen der
368Eingabe, Auswertung, Vereinfachung und Ausgabe erl�utert, die jede
369Eingabe des Nutzers bis zur Ausgabe auf der Konsole durchl�uft.
370
371Jede Eingabe eines Ausdrucks <expr> wird von Maxima ausgewertet.
372Symbole, die keinen Wert haben, und Zahlen werden zu sich selbst
373ausgewertet.  Symbole, die einen Wert haben, werden durch ihren Wert
374ersetzt.
375
376Beispiele:
377
378Im ersten Beispiel werden Symbole und Zahlen zu sich selbst ausgewertet.
379Im zweiten Beispiel erh�lt die Variable 'a' den Wert '2'.  In den
380folgenden Ausdr�cken wird die Variable 'a' ausgewertet und durch ihren
381Wert ersetzt.
382
383     (%i1) [a, b, 2, 1/2, 1.0];
384                                       1
385     (%o1)                   [a, b, 2, -, 1.0]
386                                       2
387     (%i2) a:2$
388
389     (%i3) [a, sin(a), a^2];
390     (%o3)                    [2, sin(2), 4]
391
392Maxima unterscheidet Funktionen in einer Verbform von Funktionen in
393einer Substantivform.  Funktionen in einer Verbform werden ausgewertet,
394indem die Funktion auf die ausgewerteten Argumente angewendet wird.  Im
395Gegensatz dazu werden Funktionen in einer Substantivform nicht auf die
396Argumente angewendet, jedoch werden die Argumente weiterhin ausgewertet.
397Funktionen k�nnen in beiden Formen auftreten.  Typische Beispiele sind
398die Differentiation mit der Funktion 'diff' oder die Integration mit der
399Funktion 'integrate'.  Siehe zum diesem Thema auch *note Substantive und
400Verben::.
401
402Beispiele:
403
404Die Variable 'a' erh�lt einen Wert.  Im ersten Fall liegt die Funktion
405'diff' in ihrer Verbform vor.  Die Auswertung bewirkt, dass die Funktion
406auf die Argumente 'a*x^2' und <x> angewendet wird.  Im zweiten Fall
407liegt die Funktion 'diff' in ihrer Substantivform vor.  Dies wird hier
408durch den 'Quote-Operator' ''' bewirkt.  Jetzt wird die Funktion nicht
409angewendet.  Das Ergebnis ist ein symbolischer Ausdruck f�r die
410Ableitung.  Da auch in diesem Fall die Argumente ausgewertet werden,
411wird auch hier der Wert '1/2' f�r die Variable 'a' eingesetzt.
412
413     (%i1) a:1/2;
414                                     1
415     (%o1)                           -
416                                     2
417     (%i2) diff(a*x^2, x);
418     (%o2)                           x
419     (%i3) 'diff(a*x^2, x);
420                                       2
421                                  d   x
422     (%o3)                        -- (--)
423                                  dx  2
424
425Nicht alle Maxima-Funktionen werten die Argumente aus.  Die
426Dokumentation der Funktionen gibt h�ufig einen Hinweis darauf, ob die
427Argumente ausgewertet werden oder nicht.
428
429Beispiel:
430
431Die Funktion 'properties' wertet das Argument nicht aus.  Dies ist f�r
432den Nutzer praktisch, da ansonsten die Auswertung einer Variablen 'a',
433die einen Wert hat, explizit mit dem Quote-Operator ''' unterdr�ckt
434werden m�sste, um die Eigenschaften des Symbols ''a' anzuzeigen.  Im
435ersten Fall ist das Ergebnis eine leere Liste.  Das Symbol 'a' hat keine
436Eigenschaften.  Im zweiten Fall erh�lt die Variable 'a' einen Wert.  Die
437Funktion 'properties' wertet ihr Argument nicht aus und 'a' wird nicht
438durch den Wert '2' ersetzt.  Die Funktion 'properties' zeigt weiterhin
439die Eigenschaften des Symbols ''a' an.
440
441     (%i1) properties(a);
442     (%o1)                          []
443     (%i2) a:2$
444
445     (%i3) properties(a);
446     (%o3)                        [value]
447
448Die Auswertung von Symbolen, Funktionen und Ausdr�cken kann mit dem
449Quote-Operator ''' und dem Quote-Quote-Operator '''' kontrolliert
450werden.  Der Quote-Operator unterdr�ckt die Auswertung.  Dagegen
451erzwingt der Quote-Quote-Operator die Auswertung.
452
453Mit der Funktion 'ev' wird ein Ausdruck in einer definierten Umgebung
454ausgewertet, in der Optionsvariablen f�r die Auswertung einen bestimmten
455Wert erhalten oder Auswertungsschalter 'evflag' und
456Auswertungsfunktionen 'evfun' angewendet werden.
457
458
459File: maxima.info,  Node: Funktionen und Variablen f�r die Auswertung,  Prev: Einf�hrung in die Auswertung,  Up: Auswertung
460
4618.2 Funktionen und Variablen f�r die Auswertung
462===============================================
463
464 -- Operator: '
465
466     Der Quote-Operator ''' unterdr�ckt die Auswertung eines Symbols
467     oder Ausdrucks.  Auf eine Funktion angewendet, unterdr�ckt der
468     Quote-Operator die Auswertung der Funktion.  Die Auswertung der
469     Argumente der Funktion wird nicht unterdr�ckt.  Das Ergebnis ist
470     die Substantivform der Funktion.
471
472     Wird der Quote-Operator auf einen eingeklammerten Ausdruck
473     angewendet, wird die Auswertung aller Symbole und Funktionen
474     innerhalb der Klammern unterdr�ckt.  ''(f(x))' bedeutet, dass der
475     Ausdruck 'f(x)' nicht ausgewertet werden soll.  ''f(x)' bedeutet,
476     dass die Substantivform von 'f' auf das ausgewertete Argument <x>
477     angewendet wird.
478
479     Der Quote-Operator unterdr�ckt die Auswertung, aber nicht die
480     Vereinfachung von Ausdr�cken.
481
482     Substantivformen werden mit einem Hochkomma angezeigt, wenn die
483     Optionsvariable 'noundisp' den Wert 'true' hat.
484
485     Siehe auch den Quote-Quote-Operator '''' und den
486     Auswertungsschalter 'nouns'.
487
488     Beispiele:
489
490     Auf ein Symbol angewendet, unterdr�ckt der Quote-Operator die
491     Auswertung des Symbols.
492
493          (%i1) aa: 1024;
494          (%o1)                         1024
495          (%i2) aa^2;
496          (%o2)                        1048576
497          (%i3) 'aa^2;
498                                           2
499          (%o3)                          aa
500          (%i4) ''%;
501          (%o4)                        1048576
502
503     Auf eine Funktion angewendet, unterdr�ckt der Quote-Operator die
504     Auswertung der Funktion.  Das Ergebnis ist die Substantivform der
505     Funktion.
506
507          (%i1) x0: 5;
508          (%o1)                           5
509          (%i2) x1: 7;
510          (%o2)                           7
511          (%i3) integrate (x^2, x, x0, x1);
512                                         218
513          (%o3)                          ---
514                                          3
515          (%i4) 'integrate (x^2, x, x0, x1);
516                                       7
517                                      /
518                                      [   2
519          (%o4)                       I  x  dx
520                                      ]
521                                      /
522                                       5
523          (%i5) %, nouns;
524                                         218
525          (%o5)                          ---
526                                          3
527
528     Wird der Quote-Operator auf einen eingeklammerten Ausdruck
529     angewendet, wird die Auswertung aller Symbole und Funktionen
530     innerhalb der Klammern unterdr�ckt.
531
532          (%i1) aa: 1024;
533          (%o1)                         1024
534          (%i2) bb: 19;
535          (%o2)                          19
536          (%i3) sqrt(aa) + bb;
537          (%o3)                          51
538          (%i4) '(sqrt(aa) + bb);
539          (%o4)                     bb + sqrt(aa)
540          (%i5) ''%;
541          (%o5)                          51
542
543     Der Quote-Operator unterdr�ckt nicht die Vereinfachung von
544     Ausdr�cken.
545
546          (%i1) sin (17 * %pi) + cos (17 * %pi);
547          (%o1)                          - 1
548          (%i2) '(sin (17 * %pi) + cos (17 * %pi));
549          (%o2)                          - 1
550
551     Gleitkommarechnungen sind eine Vereinfachung und keine Auswertung.
552     Daher kann die Berechnung von 'sin(1.0)' nicht mit dem
553     Quote-Operator unterdr�ckt werden.
554
555          (%i1) sin(1.0);
556          (%o1)                          .8414709848078965
557          (%i2) '(sin(1.0));
558          (%o2)                          .8414709848078965
559
560 -- Operator: ''
561
562     Der Quote-Quote-Operator '''' (zwei Hochkommata) modifiziert die
563     Auswertung von Ausdr�cken, die von der Eingabe gelesen werden.
564
565     Wird der Quote-Quote-Operator auf einen allgemeinen Ausdruck <expr>
566     angewendet, wird der Ausdruck <expr> durch seinen Wert ersetzt.
567
568     Wird der Quote-Quote-Operator auf den Operator eines Ausdruckes
569     angewendet, �ndert sich der Operator, wenn er in seiner
570     Substantivform vorliegt, in die Verbform.
571
572     Der Quote-Quote-Operator wird vom Parser, der die Eingabe liest,
573     sofort angewendet und nicht im eingelesen Ausdruck gespeichert.
574     Daher kann die Auswertung des Quote-Quote-Operators nicht durch
575     einen weiteren Quote-Operator verhindert werden.  Der
576     Quote-Quote-Operator f�hrt zur Auswertung von Ausdr�cken, deren
577     Auswertung unterdr�ckt ist.  Das ist der Fall f�r
578     Funktionsdefinitionen, Lambda-Ausdr�cke und Ausdr�cke, deren
579     Auswertung durch den Quote-Operator verhindert wurde.
580
581     Der Quote-Quote-Operator wird von den Befehlen 'batch' und 'load'
582     erkannt.
583
584     Siehe auch den Quote-Operator ''' und den Auswertungsschalter
585     'nouns'.
586
587     Beispiele:
588
589     Wird der Quote-Quote-Operator auf einen Ausdruck <expr> angewendet,
590     wird der Wert von <expr> in den Ausdruck eingesetzt.
591
592          (%i1) expand ((a + b)^3);
593                               3        2      2      3
594          (%o1)               b  + 3 a b  + 3 a  b + a
595          (%i2) [_, ''_];
596                                   3    3        2      2      3
597          (%o2)     [expand((b + a) ), b  + 3 a b  + 3 a  b + a ]
598          (%i3) [%i1, ''%i1];
599                                   3    3        2      2      3
600          (%o3)     [expand((b + a) ), b  + 3 a b  + 3 a  b + a ]
601          (%i4) [aa : cc, bb : dd, cc : 17, dd : 29];
602          (%o4)                   [cc, dd, 17, 29]
603          (%i5) foo_1 (x) := aa - bb * x;
604          (%o5)                 foo_1(x) := aa - bb x
605          (%i6) foo_1 (10);
606          (%o6)                      cc - 10 dd
607          (%i7) ''%;
608          (%o7)                         - 273
609          (%i8) ''(foo_1 (10));
610          (%o8)                         - 273
611          (%i9) foo_2 (x) := ''aa - ''bb * x;
612          (%o9)                 foo_2(x) := cc - dd x
613          (%i10) foo_2 (10);
614          (%o10)                        - 273
615          (%i11) [x0 : x1, x1 : x2, x2 : x3];
616          (%o11)                    [x1, x2, x3]
617          (%i12) x0;
618          (%o12)                         x1
619          (%i13) ''x0;
620          (%o13)                         x2
621          (%i14) '' ''x0;
622          (%o14)                         x3
623
624     Wird der Quote-Quote-Operator auf den Operator in einem Ausdruck
625     angewendet, �ndert sich der Operator von seiner Substantivform in
626     die Verbform.
627
628          (%i1) declare (foo, noun);
629          (%o1)                         done
630          (%i2) foo (x) := x - 1729;
631          (%o2)                 ''foo(x) := x - 1729
632          (%i3) foo (100);
633          (%o3)                       foo(100)
634          (%i4) ''foo (100);
635          (%o4)                        - 1629
636
637     Der Quote-Quote-Operator wird vom Parser sofort auf den
638     eingelesenen Ausdruck angewendet und ist nicht Teil eines
639     Maxima-Ausdrucks.
640
641          (%i1) [aa : bb, cc : dd, bb : 1234, dd : 5678];
642          (%o1)                 [bb, dd, 1234, 5678]
643          (%i2) aa + cc;
644          (%o2)                        dd + bb
645          (%i3) display (_, op (_), args (_));
646                                     _ = cc + aa
647
648                                   op(cc + aa) = +
649
650                              args(cc + aa) = [cc, aa]
651
652          (%o3)                         done
653          (%i4) ''(aa + cc);
654          (%o4)                         6912
655          (%i5) display (_, op (_), args (_));
656                                     _ = dd + bb
657
658                                   op(dd + bb) = +
659
660                              args(dd + bb) = [dd, bb]
661          (%o5)                         done
662
663     Der Quote-Quote-Operator bewirkt die Auswertung von Ausdr�cken,
664     deren Auswertung unterdr�ckt ist wie in Funktionsdefinitionen,
665     Lambda-Ausdr�cken und Ausdr�cken, auf die der Quote-Operator
666     angewendet wurde.
667
668          (%i1) foo_1a (x) := ''(integrate (log (x), x));
669          (%o1)               foo_1a(x) := x log(x) - x
670          (%i2) foo_1b (x) := integrate (log (x), x);
671          (%o2)           foo_1b(x) := integrate(log(x), x)
672          (%i3) dispfun (foo_1a, foo_1b);
673          (%t3)               foo_1a(x) := x log(x) - x
674
675          (%t4)           foo_1b(x) := integrate(log(x), x)
676
677          (%o4)                      [%t3, %t4]
678          (%i5) integrate (log (x), x);
679          (%o5)                     x log(x) - x
680          (%i6) foo_2a (x) := ''%;
681          (%o6)               foo_2a(x) := x log(x) - x
682          (%i7) foo_2b (x) := %;
683          (%o7)                    foo_2b(x) := %
684          (%i8) dispfun (foo_2a, foo_2b);
685          (%t8)               foo_2a(x) := x log(x) - x
686
687          (%t9)                    foo_2b(x) := %
688
689          (%o9)                      [%t8, %t9]
690          (%i10) F : lambda ([u], diff (sin (u), u));
691          (%o10)            lambda([u], diff(sin(u), u))
692          (%i11) G : lambda ([u], ''(diff (sin (u), u)));
693          (%o11)                 lambda([u], cos(u))
694          (%i12) '(sum (a[k], k, 1, 3) + sum (b[k], k, 1, 3));
695          (%o12)         sum(b , k, 1, 3) + sum(a , k, 1, 3)
696                              k                  k
697          (%i13) '(''(sum (a[k], k, 1, 3)) + ''(sum (b[k], k, 1, 3)));
698          (%o13)             b  + a  + b  + a  + b  + a
699                              3    3    2    2    1    1
700
701 -- Funktion: ev (<expr>, <arg_1>, ..., <arg_n>)
702
703     Wertet den Ausdruck <expr> in einer Umgebung aus, die durch die
704     Argumente <arg_1>, ..., <arg_n> spezifiziert wird.  Die Argumente
705     sind Optionsvariablen (Boolesche Variablen), Zuweisungen,
706     Gleichungen und Funktionen.  'ev' gibt das Ergebnis der Auswertung
707     zur�ck.
708
709     Die Auswertung wird in den folgenden Schritten durchgef�hrt:
710
711       1. Zuerst wird die Umgebung gesetzt.  Dazu werden die Argumente
712          <arg_1>, ..., <arg_n> ausgewertet.  Folgende Argumente sind
713          m�glich:
714
715             * 'simp' bewirkt, dass der Ausdruck <expr> vereinfacht
716               wird.  Der Wert der Optionsvariablen 'simp' wird dabei
717               ignoriert.  Der Ausdruck wird also auch dann vereinfacht,
718               wenn die Optionsvariable <simp> den Wert 'false' hat.
719
720             * 'noeval' unterdr�ckt die Auswertungphase der Funktion
721               'ev' (siehe Schritt (4) unten).  Dies ist n�tzlich im
722               Zusammenhang mit anderen Schaltern und um einen Ausdruck
723               <expr> erneuert zu vereinfachen, ohne dass dieser
724               ausgewertet wird.
725
726             * 'nouns' bewirkt die Auswertung von Substantivformen.
727               Solche Substantivformen sind typischerweise nicht
728               ausgewertete Funktionen wie ''integrate' oder ''diff',
729               die im Ausdruck <expr> enthalten sind.
730
731             * 'expand' bewirkt die Expansion des Ausdruckes <expr>.
732               Siehe die Funktion 'expand'.
733
734             * 'expand'(<m>, <n>) bewirkt die Expansion des Ausdruckes
735               <expr>, wobei den Optionsvariablen 'maxposex' und
736               'maxnegex' die Werte der Argumente <m> und <n> zugewiesen
737               werden.  Siehe die Funktion 'expand'.
738
739             * 'detout' bewirkt, dass bei der Berechnung von Inversen
740               von Matrizen, die im Ausdruck <expr> enthalten sind,
741               Determinanten den Matrizen vorangestellt und nicht
742               elementweise in die Matrize hereinmultipliziert werden.
743
744             * 'diff' bewirkt, dass alle Ableitungen ausgef�hrt werden,
745               die im Ausdruck <expr> enthalten sind.
746
747             * 'derivlist(<x>, <y>, <z>, ...)' bewirkt, dass die
748               Ableitungen bez�glich der angegebenen Variablen <x>, <y>,
749               <z>, ... ausgef�hrt werden.
750
751             * 'risch' bewirkt das Integrale im Ausdruck <expr> mit dem
752               Risch-Algorithmus berechnet werden.  Siehe 'risch'.  Wird
753               der Schalter 'nouns' benutzt, wird der
754               Standardalgorithmus f�r Integrale verwendet.
755
756             * 'float' bewirkt, dass rationale Zahlen in
757               Gleitkommazahlen konvertiert werden.
758
759             * 'numer' bewirkt, dass mathematische Funktionen mit
760               numerischen Argumenten ein Ergebnis in Gleitkommazahlen
761               liefern.  Variablen in 'expr', denen numerische Werte
762               zugewiesen wurden, werden durch diese ersetzt.  Der
763               Schalter 'float' wird zus�tzlich wirksam.
764
765             * 'pred' bewirkt, dass Aussagen zu 'true' oder 'false'
766               ausgewertet werden.
767
768             * 'eval' bewirkt eine zus�tzliche Auswertung des Ausdrucks
769               <expr>.  (Siehe Schritt (5) unten).  'eval' kann mehrfach
770               angewendet werden.  Jedes Auftreten von 'eval' f�hrt zu
771               einer weiteren Auswertung.
772
773             * 'A', wobei 'A' ein Symbol ist, das als ein
774               Auswertungsschalter 'evflag' definiert ist.  W�hrend der
775               Auswertung des Ausdrucks <expr> erh�lt 'A' den Wert
776               'true'.
777
778             * 'V: expression' (oder alternativ 'V=expression') bewirkt,
779               dass 'V' w�hrend der Auswertung des Ausdrucks <expr> den
780               Wert 'expression' erh�lt.  'V' kann auch eine
781               Optionsvariable sein, die f�r die Auswertung den Wert
782               'expression' erh�lt.  Wenn mehr als ein Argument der
783               Funktion 'ev' �bergeben wird, wird die Zuweisung der
784               Werte parallel ausgef�hrt.  Wenn 'V' kein Atom ist, wird
785               anstatt einer Zuweisung eine Substitution ausgef�hrt.
786
787             * 'F', wobei 'F' der Name einer Funktion ist, die als eine
788               Auswertungsfunktion (siehe 'evfun') definiert wurde.  'F'
789               bewirkt, dass die Auswertungsfunktion auf den Ausdruck
790               <expr> angewendet wird.
791
792             * Jeder andere Funktionsname (zum Beispiel 'sum') bewirkt,
793               dass jedes Auftreten dieser Funktion im Ausdruck <expr>
794               ausgewertet wird.
795
796             * Zus�tzlich kann f�r die Auswertung von <expr> eine lokale
797               Funktion 'F(x) := expression' definiert werden.
798
799             * Wird ein Symbol, eine indizierte Variable oder ein
800               indizierter Ausdruck, der oben nicht genannt wurde, als
801               Argument �bergeben, wird das Argument ausgewertet.  Wenn
802               das Ergebnis eine Gleichung oder eine Zuweisung ist,
803               werden die entsprechenden Zuweisungen und Substitutionen
804               ausgef�hrt.  Wenn das Ergebnis eine Liste ist, werden die
805               Elemente der Liste als zus�tzliche Argumente von 'ev'
806               betrachtet.  Dies erlaubt, das eine Liste mit Gleichungen
807               (zum Beispiel '[%t1, %t2]', wobei '%t1' und '%t2'
808               Gleichungen sind) wie sie zum Beispiel von der Funktion
809               'solve' erzeugt wird, als Argument verwendet werden kann.
810
811          Die Argumente der Funktion 'ev' k�nnen in einer beliebigen
812          Reihenfolge �bergeben werden.  Ausgenommen sind Gleichungen
813          mit Substitutionen, die nacheinander von links nach rechts
814          ausgewertet werden, sowie Auswertungsfunktionen, die verkettet
815          werden.  So wird zum Beispiel 'ev(<expr>, ratsimp, realpart)'
816          zu 'realpart(ratsimp(<expr>))'.
817
818          Die Schalter 'simp', 'numer', 'float' und 'detout' sind auch
819          Optionsvariablen, die lokal in einem Block oder global gesetzt
820          werden k�nnen.
821
822          Ist <expr> ein kanonischer rationaler Ausdruck (CRE =
823          canonical rational expression), ist auch das Ergebnis der
824          Funktion 'ev' ein CRE-Ausdruck, falls nicht die beiden
825          Schalter 'float' und 'numer' den Wert 'true' haben.
826
827       2. W�hrend des Schritts (1) wird eine Liste der nicht indizierten
828          Variablen erstellt, die auf der linken Seite von Gleichungen
829          auftreten.  Die Gleichungen k�nnen dabei entweder als Argument
830          oder als Wert eines Argumentes vorliegen.  Variablen, die
831          nicht in dieser Liste enthalten sind, werden durch ihre
832          globalen Werte ersetzt.  Davon ausgenommen sind Variablen, die
833          eine Array-Funktion repr�sentieren.  Ist zum Beispiel <expr>
834          eine Marke wie '%i2' im Beispiel unten oder das letzte
835          Ergebnis '%', so wird in diesem Schritt der globale Wert
836          dieser Marke eingesetzt und die Bearbeitung durch 'ev'
837          fortgesetzt.
838
839       3. Wenn in den Argumenten Substitutionen aufgef�hrt sind, werden
840          diese nun ausgef�hrt.
841
842       4. Der resultierende Ausdruck wird erneut ausgewertet, au�er wenn
843          'noeval' unter den Argumente ist, und vereinfacht.  Die
844          Funktionsaufrufe in <expr> werden erst ausgef�hrt, wenn die
845          enthaltenden Variablen ausgewertet sind.  Dadurch verh�lt sich
846          'ev(F(x))' wie 'F(ev(x))'.
847
848       5. F�r jedes Auftreten des Schalters 'eval' in den Argumenten
849          werden die Schritte (3) und (4) wiederholt.
850
851     Anstatt der Anwendung der Funktion 'ev' k�nnen alternativ der
852     Ausdruck und die Argumente durch Kommata getrennt eingegeben
853     werden:
854
855          <expr>, <arg_1>, ..., <arg_n>
856
857     Diese Kurzschreibweise ist jedoch als Teil eines anderen Ausdrucks,
858     zum Beispiel in Funktionen oder Bl�cken nicht gestattet.
859
860     Beispiele:
861
862          (%i1) sin(x) + cos(y) + (w+1)^2 + 'diff (sin(w), w);
863                                               d                    2
864          (%o1)              cos(y) + sin(x) + -- (sin(w)) + (w + 1)
865                                               dw
866          (%i2) ev (%, numer, expand, diff, x=2, y=1);
867                                         2
868          (%o2)                cos(w) + w  + 2 w + 2.449599732693821
869
870     Im folgenden Beispiel werden die Zuweisungen parallel durchgef�hrt.
871     Es wird die Kurzschreibweise der Funktion 'ev' angewendet.
872
873          (%i3) programmode: false;
874          (%o3)                                false
875          (%i4) x+y, x: a+y, y: 2;
876          (%o4)                              y + a + 2
877          (%i5) 2*x - 3*y = 3$
878          (%i6) -3*x + 2*y = -4$
879          (%i7) solve ([%o5, %o6]);
880          Solution
881
882                                                    1
883          (%t7)                               y = - -
884                                                    5
885
886                                                   6
887          (%t8)                                x = -
888                                                   5
889          (%o8)                            [[%t7, %t8]]
890          (%i8) %o6, %o8;
891          (%o8)                              - 4 = - 4
892          (%i9) x + 1/x > gamma (1/2);
893                                             1
894          (%o9)                          x + - > sqrt(%pi)
895                                             x
896          (%i10) %, numer, x=1/2;
897          (%o10)                      2.5 > 1.772453850905516
898          (%i11) %, pred;
899          (%o11)                               true
900
901 -- Auswertungsschalter: eval
902
903     Als Argument des Kommandos 'ev(expr, eval)' bewirkt 'eval' eine
904     zus�tzliche Auswertung des Ausdrucks 'expr'.
905
906     'eval' kann mehrfach auftreten.  Jedes Auftreten f�hrt zu einer
907     zus�tzlichen Auswertung.
908
909     Siehe auch die Funktion 'ev' sowie die Auswertungsschalter 'noeval'
910     und 'infeval'
911
912     Beispiele:
913
914          (%i1) [a:b,b:c,c:d,d:e];
915          (%o1)                            [b, c, d, e]
916          (%i2) a;
917          (%o2)                                  b
918          (%i3) ev(a);
919          (%o3)                                  c
920          (%i4) ev(a),eval;
921          (%o4)                                  e
922          (%i5) a,eval,eval;
923          (%o5)                                  e
924
925 -- Eigenschaft: evflag
926
927     Wenn ein Symbol <x> die Eigenschaft eines Auswertungsschalters
928     besitzt, sind die Ausdr�cke 'ev(<expr>, <x>)' und '<expr>, <x>'
929     �quivalent zu 'ev(<expr>, <x> = true)'.  W�hrend der Auswertung von
930     <expr> erh�lt also <x> den Wert 'true'.
931
932     Mit 'declare(<x>, evflag)' wird der Variablen <x> die
933     'evflag'-Eigenschaft gegeben.  Siehe auch die Funktion 'declare'.
934     Mit 'kill' oder 'remove' kann diese Eigenschaft wieder entfernt
935     werden.  Siehe auch 'properties' f�r die Anzeige von Eigenschaften.
936
937     Folgende Optionsvariablen haben bereits die 'evflag'-Eigenschaft:
938
939        algebraic           cauchysum       demoivre
940        dotscrules          %emode          %enumer
941        exponentialize      exptisolate     factorflag
942        float               halfangles      infeval
943        isolate_wrt_times   keepfloat       letrat
944        listarith           logabs          logarc
945        logexpand           lognegint
946        m1pbranch           numer_pbranch   programmode
947        radexpand           ratalgdenom     ratfac
948        ratmx               ratsimpexpons   simp
949        simpproduct         simpsum         sumexpand
950        trigexpand
951
952     Beispiele:
953
954          (%i1) sin (1/2);
955                                           1
956          (%o1)                        sin(-)
957                                           2
958          (%i2) sin (1/2), float;
959          (%o2)                   0.479425538604203
960          (%i3) sin (1/2), float=true;
961          (%o3)                   0.479425538604203
962          (%i4) simp : false;
963          (%o4)                         false
964          (%i5) 1 + 1;
965          (%o5)                         1 + 1
966          (%i6) 1 + 1, simp;
967          (%o6)                           2
968          (%i7) simp : true;
969          (%o7)                         true
970          (%i8) sum (1/k^2, k, 1, inf);
971                                      inf
972                                      ====
973                                      \     1
974          (%o8)                        >    --
975                                      /      2
976                                      ====  k
977                                      k = 1
978          (%i9) sum (1/k^2, k, 1, inf), simpsum;
979                                           2
980                                        %pi
981          (%o9)                         ----
982                                         6
983          (%i10) declare (aa, evflag);
984          (%o10)                        done
985          (%i11) if aa = true then YES else NO;
986          (%o11)                         NO
987          (%i12) if aa = true then YES else NO, aa;
988          (%o12)                         YES
989
990 -- Eigenschaft: evfun
991
992     Wenn eine Funktion <F> die Eigenschaft 'evfun' besitzt, sind die
993     Ausdr�cke 'ev(<expr>, <F>)' und '<expr>, <F>'  �quivalent zu
994     '<F>(ev(<expr>))'.
995
996     Zwei oder mehr 'evfun'-Funktionen <F>, <G>, ... werden in der
997     aufgef�hrten Reihenfolge auf den Ausdruck <expr> angewendet.
998
999     Mit 'declare(<F>, evfun)' wird der Funktion <F> die
1000     'evfun'-Eigenschaft gegeben.  Siehe auch die Funktion 'declare'.
1001     Mit 'kill' oder 'remove' kann diese Eigenschaft wieder entfernt
1002     werden.  Siehe auch 'properties' f�r die Anzeige von Eigenschaften.
1003
1004     Funktionen, die bereits die 'evfun'-Eigenschaft besitzen, sind:
1005
1006        bfloat          factor       fullratsimp
1007        logcontract     polarform    radcan
1008        ratexpand       ratsimp      rectform
1009        rootscontract   trigexpand   trigreduce
1010
1011     Beispiele:
1012
1013          (%i1) x^3 - 1;
1014                                        3
1015          (%o1)                        x  - 1
1016          (%i2) x^3 - 1, factor;
1017                                          2
1018          (%o2)                 (x - 1) (x  + x + 1)
1019          (%i3) factor (x^3 - 1);
1020                                          2
1021          (%o3)                 (x - 1) (x  + x + 1)
1022          (%i4) cos(4 * x) / sin(x)^4;
1023                                      cos(4 x)
1024          (%o4)                       --------
1025                                         4
1026                                      sin (x)
1027          (%i5) cos(4 * x) / sin(x)^4, trigexpand;
1028                           4           2       2         4
1029                        sin (x) - 6 cos (x) sin (x) + cos (x)
1030          (%o5)         -------------------------------------
1031                                          4
1032                                       sin (x)
1033          (%i6) cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
1034                                     2         4
1035                                6 cos (x)   cos (x)
1036          (%o6)               - --------- + ------- + 1
1037                                    2          4
1038                                 sin (x)    sin (x)
1039          (%i7) ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
1040                                     2         4
1041                                6 cos (x)   cos (x)
1042          (%o7)               - --------- + ------- + 1
1043                                    2          4
1044                                 sin (x)    sin (x)
1045          (%i8) declare ([F, G], evfun);
1046          (%o8)                         done
1047          (%i9) (aa : bb, bb : cc, cc : dd);
1048          (%o9)                          dd
1049          (%i10) aa;
1050          (%o10)                         bb
1051          (%i11) aa, F;
1052          (%o11)                        F(cc)
1053          (%i12) F (aa);
1054          (%o12)                        F(bb)
1055          (%i13) F (ev (aa));
1056          (%o13)                        F(cc)
1057          (%i14) aa, F, G;
1058          (%o14)                      G(F(cc))
1059          (%i15) G (F (ev (aa)));
1060          (%o15)                      G(F(cc))
1061
1062 -- Optionsvariable: infeval
1063     Standardwert: 'false'
1064
1065     'infeval' bewirkt, dass die Funktion 'ev' die Auswertung eines
1066     Ausdrucks solange wiederholt, bis dieser sich nicht mehr �ndert.
1067     Um zu verhindern, dass eine Variable in diesem Modus durch die
1068     Auswertung verschwindet, kann zum Beispiel f�r eine Variable 'x'
1069     der Ausdruck 'x='x' als Argument von 'ev' einf�gt werden.
1070     Ausdr�cke wie 'ev(x, x=x+1, infeval)' f�hren in diesem Modus zu
1071     Endlosschleifen.
1072
1073     Siehe auch die Auswertungsschalter 'noeval' und 'eval'.
1074
1075 -- Auswertungsschalter: noeval
1076
1077     'noeval' unterdr�ckt die Auswertungsphase der Funktion 'ev'.  Der
1078     Schalter kann im Zusammenhang mit anderen Auswertungsschaltern
1079     genutzt werden, um einen Ausdruck erneut zu vereinfachen, ohne
1080     diesen auszuwerten.
1081
1082     Siehe auch die Optionsvariable 'infeval' und den
1083     Auswertungsschalter 'eval'.
1084
1085 -- Auswertungsschalter: nouns
1086
1087     'nouns' ist ein Auswertungsschalter.  Wird dieser Schalter als eine
1088     Option der Funktion 'ev' genutzt, werden alle Substantivformen, die
1089     in dem Ausdruck enthalten sind, in Verbformen umgewandelt und
1090     ausgewertet.
1091
1092     Siehe auch die Eigenschaft 'noun' und die Funktionen 'nounify' und
1093     'verbify'.
1094
1095 -- Auswertungsschalter: pred
1096
1097     Wird 'pred' als ein Argument der Funktion 'ev' eingesetzt, werden
1098     Aussagen zu 'true' oder 'false' ausgewertet.  Siehe die Funktion
1099     'ev'.
1100
1101     Beispiel:
1102
1103          (%i1) 1 < 2;
1104          (%o1)                                1 < 2
1105          (%i2) 1 < 2,pred;
1106          (%o2)                                true
1107
1108
1109File: maxima.info,  Node: Vereinfachung,  Next: Mathematische Funktionen,  Prev: Auswertung,  Up: Top
1110
11119 Vereinfachung
1112***************
1113
1114* Menu:
1115
1116* Einf�hrung in die Vereinfachung::
1117* Funktionen und Variablen f�r die Vereinfachung::
1118
1119
1120File: maxima.info,  Node: Einf�hrung in die Vereinfachung,  Next: Funktionen und Variablen f�r die Vereinfachung,  Prev: Vereinfachung,  Up: Vereinfachung
1121
11229.1 Einf�hrung in die Vereinfachung
1123===================================
1124
1125Nach der Auswertung einer Eingabe, die in *note Auswertung:: beschrieben
1126ist, schlie�t sich die Vereinfachung eines Ausdrucks an.  Mathematische
1127Funktionen mit denen symbolisch gerechnet werden kann, werden nicht
1128ausgewertet, sondern vereinfacht.  Mathematische Funktionen werden
1129intern von Maxima in einer Substantivform dargestellt.  Auch Ausdr�cke
1130mit den arithmetischen Operatoren werden vereinfacht.  Numerische
1131Rechnungen wie die Addition oder Multiplikation sind daher keine
1132Auswertung, sondern eine Vereinfachung.  Die Auswertung eines Ausdrucks
1133kann mit dem 'Quote-Operator' ''' unterdr�ckt werden.  Entsprechend kann
1134die Vereinfachung eines Ausdrucks mit der Optionsvariablen 'simp'
1135kontrolliert werden.
1136
1137Beispiele:
1138
1139Im ersten Beispiel wird die Auswertung mit dem Quote-Operator
1140unterdr�ckt.  Das Ergebnis ist eine Substantivform f�r die Ableitung.
1141Im zweiten Beispiel ist die Vereinfachung unterdr�ckt.  Die Ableitung
1142wird ausgef�hrt, da es sich um eine Auswertung handelt.  Das Ergebnis
1143wird jedoch nicht zu '2*x' vereinfacht.
1144
1145     (%i1) 'diff(x*x,x);
1146                                  d    2
1147     (%o1)                        -- (x )
1148                                  dx
1149     (%i2) simp:false;
1150     (%o2)                         false
1151     (%i3) diff(x*x,x);
1152     (%o3)                       1 x + 1 x
1153
1154F�r jede mathematischen Funktion oder Operator hat Maxima intern eine
1155eigene Routine, die f�r die Vereinfachung aufgerufen wird, sobald die
1156Funktion oder der Operator in einem Ausdruck auftritt.  Diese Routinen
1157implementieren Symmetrieeigenschaften, spezielle Funktionswerte oder
1158andere Eigenschaften und Regeln.  Mit einer Vielzahl von
1159Optionsvariablen kann Einfluss auf die Vereinfachung der Funktionen und
1160Operatoren genommen werden.
1161
1162Beispiel:
1163
1164Die Vereinfachung der Exponentialfunktion 'exp' wird von den folgenden
1165Optionsvariablen kontrolliert: '%enumer', '%emode', '%e_to_numlog',
1166'radexpand', 'logsimp', und 'demoivre'.  Im ersten Beispiel wird der
1167Ausdruck mit der Exponentialfunktion nicht vereinfacht.  Im zweiten
1168Beispiel vereinfacht Maxima ein Argument '%i*%pi/2'.
1169
1170     (%i1) exp(x+%i*%pi/2), %emode:false;
1171                                     %i %pi
1172                                 x + ------
1173                                       2
1174     (%o1)                     %e
1175     (%i2) exp(x+%i*%pi/2), %emode:true;
1176                                       x
1177     (%o2)                        %i %e
1178
1179Zus�tzlich zu der Vereinfachung von einzelnen mathematischen Funktionen
1180und Operatoren, die automatisch von Maxima ausgef�hrt werden, kennt
1181Maxima Funktionen wie 'expand' oder 'radcan', die auf Ausdr�cke
1182angewendet werden, um spezielle Vereinfachungen vorzunehmen.
1183
1184Beispiel:
1185
1186     (%i1) (log(x+x^2)-log(x))^a/log(1+x)^(a/2);
1187                                2               a
1188                          (log(x  + x) - log(x))
1189     (%o1)                -----------------------
1190                                         a/2
1191                               log(x + 1)
1192     (%i2) radcan(%);
1193                                         a/2
1194     (%o2)                     log(x + 1)
1195
1196Einem Operator oder einer Funktion k�nnen Eigenschaften wie linear oder
1197symmetrisch gegeben werden.  Maxima ber�cksichtigt diese Eigenschaften
1198bei der Vereinfachung eines Ausdrucks.  Zum Beispiel wird mit dem
1199Kommando 'declare(f, oddfun)' eine Funktion als ungerade definiert.
1200Maxima vereinfacht dann jedes Auftreten eines Ausdrucks 'f(-x)' zu
1201'-f(x)'.  Entsprechend vereinfacht Maxima 'f(-x)' zu 'f(x)', wenn die
1202Funktion als gerade definiert wurde.
1203
1204Die folgenden Eigenschaften sind in der Liste 'opproperties' enthalten
1205und kontrollieren die Vereinfachung von Funktionen und Operatoren:
1206
1207   additive        lassociative     oddfun
1208   antisymmetric   linear           outative
1209   commutative     multiplicative   rassociative
1210   evenfun         nary             symmetric
1211
1212Dar�ber hinaus haben auch die Fakten und die Eigenschaften des aktuellen
1213Kontextes Einfluss auf die Vereinfachung von Ausdr�cken.  Siehe dazu die
1214Ausf�hrungen in *note Maximas Datenbank::.
1215
1216Beispiel:
1217
1218Die Sinusfunktion vereinfacht f�r ein ganzzahliges Vielfaches von '%pi'
1219zum Wert '0'.  Erh�lt das Symbol 'n' die Eigenschaft 'integer', wird die
1220Sinusfunktion entsprechend vereinfacht.
1221
1222     (%i1) sin(n*%pi);
1223     (%o1)                      sin(%pi n)
1224     (%i2) declare(n, integer);
1225     (%o2)                         done
1226     (%i3) sin(n*%pi);
1227     (%o3)                           0
1228
1229F�hren alle oben genannten M�glichkeiten nicht zu dem gew�nschten
1230Ergebnis, kann der Nutzer Maxima um weitere Regeln f�r die Vereinfachung
1231erweitern.  Diese M�glichkeiten werden in *note Muster und Regeln::
1232erl�utert.
1233
1234
1235File: maxima.info,  Node: Funktionen und Variablen f�r die Vereinfachung,  Prev: Einf�hrung in die Vereinfachung,  Up: Vereinfachung
1236
12379.2 Funktionen und Variablen f�r die Vereinfachung
1238==================================================
1239
1240 -- Eigenschaft: additive
1241
1242     'declare(f, additive)' deklariert eine Funktion 'f' als additiv.
1243     Hat die Funktion 'f' ein Argument, dann wird 'f(x + y)' zu 'f(x) +
1244     f(y)' vereinfacht.
1245
1246     Ist 'f' eine Funktion mit zwei oder mehr Argumenten, ist die
1247     Additivit�t f�r das erste Argument definiert.  Zum Beispiel wird
1248     'f(x + y,a + b)' zu 'f(y, b + a) + f(x, b + a)' vereinfacht.
1249
1250     Siehe die Funktion 'declare'.
1251
1252     Beispiel:
1253
1254          (%i1) F3 (a + b + c);
1255          (%o1)                     F3(c + b + a)
1256          (%i2) declare (F3, additive);
1257          (%o2)                         done
1258          (%i3) F3 (a + b + c);
1259          (%o3)                 F3(c) + F3(b) + F3(a)
1260
1261 -- Eigenschaft: antisymmetric
1262
1263     'declare(f, antisymmetric)' deklariert die Funktion 'f' als
1264     antisymmetrisch.  Zum Beispiel wird 'f(y, x)' zu '- f(x, y)'
1265     vereinfacht.
1266
1267     Siehe auch die Eigenschaft 'symmetric' und die Funktion 'declare'.
1268
1269     Beispiel:
1270
1271          (%i1) S (b, a);
1272          (%o1)                        S(b, a)
1273          (%i2) declare (T, antisymmetric);
1274          (%o2)                         done
1275          (%i3) T (b, a);
1276          (%o3)                       - T(a, b)
1277          (%i4) T (a, c, e, d, b);
1278          (%o4)                   T(a, b, c, d, e)
1279
1280 -- Funktion: combine (<expr>)
1281
1282     Terme einer rationalen Funktion, die denselben Nenner haben, werden
1283     zusammengefasst.
1284
1285     Beispiel:
1286
1287          (%i1) x^2/(1+x)+2*x/(1+x);
1288                                      2
1289                                     x       2 x
1290          (%o1)                     ----- + -----
1291                                    x + 1   x + 1
1292          (%i2) combine(%);
1293                                       2
1294                                      x  + 2 x
1295          (%o2)                       --------
1296                                       x + 1
1297
1298 -- Eigenschaft: commutative
1299
1300     'declare(f, commutative)' deklariert die Funktion 'f' als
1301     kommutativ.  Zum Beispiel wird 'f(x, z, y)' zu 'f(x, y, z)'
1302     vereinfacht.  Dies hat denselben Effekt wie die Deklaration
1303     'symmetric'.
1304
1305     Siehe auch die Funktion 'declare'.
1306
1307 -- Funktion: demoivre (<expr>)
1308 -- Optionsvariable: demoivre
1309
1310     Die Funktion 'demoivre(expr)' konvertiert den Ausdruck <expr>, ohne
1311     die Optionsvariable 'demoivre' zu setzen.
1312
1313     Hat die Optionsvariable 'demoivre' den Wert 'true', werden komplexe
1314     Exponentialfunktionen in �quivalente Kreisfunktionen umgewandelt.
1315     'exp(a + b*%i)' wird zu '%e^a*(cos(b)+%i*sin(b))' vereinfacht, wenn
1316     'b' frei von der imagin�ren Einheit '%i' ist.  'a' und 'b' werden
1317     nicht expandiert.
1318
1319     Der Standardwert von 'demoivre' ist 'false'.
1320
1321     Siehe auch die Funktion 'exponentialize', um trigonometrische und
1322     hyperbolische Funktionen in eine Exponentialform zu konvertieren.
1323     'demoivre' und 'exponentialize' k�nnen nicht gleichzeitig den Wert
1324     'true' haben.
1325
1326 -- Funktion: distrib (<expr>)
1327
1328     Summen werden ausmultipliziert.  Im Unterschied zu der Funktion
1329     'expand' wird 'distrib' nur auf der obersten Ebene eines Ausdruckes
1330     angewendet und ist daher schneller als 'expand'.  Im Unterschied zu
1331     der Funktion 'multthru' werden die Summen der obersten Ebenen
1332     vollst�ndig ausmultipliziert.
1333
1334     Beispiele:
1335
1336          (%i1) distrib ((a+b) * (c+d));
1337          (%o1)                 b d + a d + b c + a c
1338          (%i2) multthru ((a+b) * (c+d));
1339          (%o2)                 (b + a) d + (b + a) c
1340          (%i3) distrib (1/((a+b) * (c+d)));
1341                                          1
1342          (%o3)                    ---------------
1343                                   (b + a) (d + c)
1344          (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1345                                          1
1346          (%o4)                 ---------------------
1347                                b d + a d + b c + a c
1348
1349 -- Optionsvariable: distribute_over
1350     Standardwert: 'true'
1351
1352     Die Optionsvariable 'distribute_over' kontrolliert die Anwendung
1353     von Funktionen auf Listen, Matrizen oder Gleichungen.  Diese
1354     Eigenschaft wird nicht angewendet, wenn 'distribute_over' den Wert
1355     'false' hat.
1356
1357     Beispiele:
1358
1359     Die Funktion 'sin' wird auf eine Liste angewendet.
1360
1361          (%i1) sin([x,1,1.0]);
1362          (%o1)                 [sin(x), sin(1), .8414709848078965]
1363
1364     Die Funktion 'mod' hat zwei Argumente, die auf Listen angewendet
1365     werden kann.  Die Funktion kann auch auf verschachtelte Listen
1366     angewendet werden.
1367
1368          (%i2) mod([x,11,2*a],10);
1369          (%o2)                    [mod(x, 10), 1, 2 mod(a, 5)]
1370          (%i3) mod([[x,y,z],11,2*a],10);
1371          (%o3)       [[mod(x, 10), mod(y, 10), mod(z, 10)], 1, 2 mod(a, 5)]
1372
1373     Anwendung der Funktion 'floor' auf eine Matrix und eine Gleichung.
1374
1375          (%i4) floor(matrix([a,b],[c,d]));
1376                                      [ floor(a)  floor(b) ]
1377          (%o4)                       [                    ]
1378                                      [ floor(c)  floor(d) ]
1379          (%i5) floor(a=b);
1380          (%o5)                         floor(a) = floor(b)
1381
1382     Funktionen mit mehreren Argumenten k�nnen auf Listen f�r eines der
1383     Argumente oder alle Argumente angewendet werden.
1384
1385          (%i6) expintegral_e([1,2],[x,y]);
1386          (%o6) [[expintegral_e(1, x), expintegral_e(1, y)],
1387                 [expintegral_e(2, x), expintegral_e(2, y)]]
1388
1389 -- Optionsvariable: domain
1390     Standardwert: 'real'
1391
1392     Hat 'domain' den Wert 'complex', wird 'sqrt(x^2)' nicht zu 'abs(x)'
1393     vereinfacht.
1394
1395 -- Eigenschaft: evenfun
1396 -- Eigenschaft: oddfun
1397
1398     Erh�lt eine Funktion oder ein Operator mit der Funktion 'declare'
1399     die Eigenschaft 'evenfun' oder 'oddfun' wird die Funktion oder der
1400     Operator von Maxima als gerade und ungerade interpretiert.  Diese
1401     Eigenschaft wird bei der Vereinfachung von Ausdr�cken von Maxima
1402     angewendet.
1403
1404     Beispiele:
1405
1406          (%i1) o (- x) + o (x);
1407          (%o1)                     o(x) + o(- x)
1408          (%i2) declare (o, oddfun);
1409          (%o2)                         done
1410          (%i3) o (- x) + o (x);
1411          (%o3)                           0
1412          (%i4) e (- x) - e (x);
1413          (%o4)                     e(- x) - e(x)
1414          (%i5) declare (e, evenfun);
1415          (%o5)                         done
1416          (%i6) e (- x) - e (x);
1417          (%o6)                           0
1418
1419 -- Funktion: expand (<expr>)
1420 -- Funktion: expand (<expr>, <p>, <n>)
1421
1422     Expandiert den Ausdruck <expr>.  Produkte von Summen und Potenzen
1423     von Summen werden ausmultipliziert.  Die Nenner von rationalen
1424     Ausdr�cken, die Summen sind, werden in ihre Terme aufgespalten.
1425     Produkte (kommutative und nicht-kommutative) werden in Summen
1426     herein multipliziert.
1427
1428     F�r Polynome ist es besser, die Funktion 'ratexpand' zu verwenden,
1429     welche f�r diesen Fall einen effizienteren Algorithmus hat.
1430
1431     'maxnegex' und 'maxposex' kontrollieren den maximalen negativen und
1432     positiven Exponenten, f�r die ein Ausdruck expandiert wird.
1433
1434     'expand(<expr>, <p>, <n>)' expandiert <expr>, wobei 'maxposex' den
1435     Wert <p> und 'maxnegex' den Wert <n> erhalten.
1436
1437     'expon' ist der gr��te negative Exponent, f�r den ein Ausdruck
1438     automatisch expandiert wird.  Hat zum Beispiel 'expon' den Wert 4,
1439     wird '(x+1)^(-5)' nicht automatisch expandiert.
1440
1441     'expop' ist der gr��te positive Exponent, f�r den ein Ausdruck
1442     automatisch expandiert wird.  So wird '(x+1)^3' dann automatisch
1443     expandiert, wenn 'expop' gr��er oder gleich 3 ist.  Soll '(x+1)^n'
1444     mit der Funktion 'expand' expandiert werden, weil 'n' gr��er als
1445     'expop' ist, dann ist dies nur m�glich, wenn 'n' kleiner als
1446     'maxposex' ist.
1447
1448     'expand(expr,0,0)' bewirkt eine erneuerte vollst�ndige
1449     Vereinfachung des Ausdrucks <expr>.  Der Ausdruck wird nicht
1450     erneuert ausgewertet.  Im Unterschied zum Kommando 'ev(expr,
1451     noeval)' wird eine spezielle Darstellung (zum Beispiel eine
1452     CRE-Form) nicht entfernt.  Siehe auch 'ev'.
1453
1454     Das 'expand'-Flag wird mit 'ev' verwendet, um einen Ausdruck zu
1455     expandieren.
1456
1457     Die Datei 'simplification/facexp.mac' enth�lt weitere Funktionen
1458     wie 'facsum', 'factorfacsum' und 'collectterms' und Variablen wie
1459     'nextlayerfactor' und 'facsum_combine', um Ausdr�cke zu
1460     vereinfachen.  Diese Funktionen werden automatisch geladen und
1461     erlauben spezielle Expansionen von Ausdr�cken.  Eine kurze
1462     Beschreibung ist in der Datei 'simplification/facexp.usg'
1463     enthalten.  Eine Demo kann mit 'demo(facexp)' ausgef�hrt werden.
1464
1465     Beispiele:
1466
1467          (%i1) expr:(x+1)^2*(y+1)^3;
1468                                         2        3
1469          (%o1)                   (x + 1)  (y + 1)
1470          (%i2) expand(expr);
1471                 2  3        3    3      2  2        2      2      2
1472          (%o2) x  y  + 2 x y  + y  + 3 x  y  + 6 x y  + 3 y  + 3 x  y
1473                                                                2
1474                                               + 6 x y + 3 y + x  + 2 x + 1
1475          (%i3) expand(expr,2);
1476                         2        3              3          3
1477          (%o3)         x  (y + 1)  + 2 x (y + 1)  + (y + 1)
1478          (%i4) expr:(x+1)^-2*(y+1)^3;
1479                                             3
1480                                      (y + 1)
1481          (%o4)                       --------
1482                                             2
1483                                      (x + 1)
1484          (%i5) expand(expr);
1485                      3               2
1486                     y             3 y            3 y             1
1487          (%o5) ------------ + ------------ + ------------ + ------------
1488                 2              2              2              2
1489                x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1
1490          (%i6) expand(expr, 2, 2);
1491                                             3
1492                                      (y + 1)
1493          (%o6)                     ------------
1494                                     2
1495                                    x  + 2 x + 1
1496
1497     Vereinfache einen Ausdruck erneut:
1498
1499          (%i7) expr:(1+x)^2*sin(x);
1500                                          2
1501          (%o7)                    (x + 1)  sin(x)
1502          (%i8) exponentialize:true;
1503          (%o8)                         true
1504          (%i9) expand(expr, 0, 0);
1505                                      2    %i x     - %i x
1506                            %i (x + 1)  (%e     - %e      )
1507          (%o9)           - -------------------------------
1508                                           2
1509
1510 -- Funktion: expandwrt (<expr>, <x_1>, ..., <x_n>)
1511
1512     Expandiert den Ausdruck 'expr' in Bezug auf die Variablen <x_1>,
1513     ..., <x_n>.  Alle Produkte, die die Variablen enthalten, werden
1514     ausmultipliziert.  Das Ergebnis ist frei von Produkten von Summen,
1515     die nicht frei von den Variablen sind.  <x_1>, ..., <x_n> k�nnen
1516     Variable, Operatoren oder Ausdr�cke sein.
1517
1518     Standardm��ig wird der Nenner eines rationalen Ausdrucks nicht
1519     expandiert.  Dies kann mit der Optionsvariablen 'expandwrt_denom'
1520     kontrolliert werden.
1521
1522     Die Funktion wird automatisch aus der Datei
1523     'simplification/stopex.mac' geladen.
1524
1525 -- Optionsvariable: expandwrt_denom
1526     Standardwert: 'false'
1527
1528     'expandwrt_denom' kontrolliert die Behandlung von rationalen
1529     Ausdr�cken durch die Funktion 'expandwrt'.  Ist der Wert 'true',
1530     werden der Z�hler und der Nenner eines rationalen Ausdrucks
1531     expandiert.  Ist der Wert 'false', wird allein der Z�hler
1532     expandiert.
1533
1534 -- Funktion: expandwrt_factored (<expr>, <x_1>, ..., <x_n>)
1535
1536     Ist vergleichbar mit der Funktion 'expandwrt', behandelt aber
1537     Ausdr�cke verschieden, die Produkte enthalten.
1538     'expandwrt_factored' expandiert nur die Faktoren im Ausdruck
1539     'expr', die die Variablen <x_1>, ..., <x_n> enthalten.
1540
1541 -- Optionsvariable: expon
1542     Standardwert: 0
1543
1544     'expon' ist der gr��te negative Exponent f�r den ein Ausdruck
1545     automatisch expandiert wird.  Hat zum Beispiel 'expon' den Wert 4,
1546     wird '(x+1)^(-5)' nicht automatisch expandiert.  Siehe auch
1547     'expop'.
1548
1549 -- Funktion: exponentialize (<expr>)
1550 -- Optionsvariable: exponentialize
1551
1552     Die Funktion 'exponentialize' konvertiert trigonometrische und
1553     hyperbolische Funktion die in dem Ausdruck <expr> auftreten in
1554     Exponentialfunktionen, ohne dass die Optionsvariable
1555     'exponentialize' gesetzt wird.
1556
1557     Hat die Optionsvariable 'exponentialize' den Wert 'true', werden
1558     trigonometrische und hyperbolischen Funktionen in eine
1559     Exponentialform konvertiert.  Der Standardwert ist 'false'.
1560
1561     'demoivre' konvertiert komplexe Exponentialfunktionen in
1562     trigonometrische und hyperbolische Funktionen.  'exponentialize'
1563     und 'demoivre' k�nnen nicht gleichzeitig den Wert 'true' haben.
1564
1565 -- Optionsvariable: expop
1566     Standardwert: 0
1567
1568     'expop' ist der gr��te positive Exponent, f�r den ein Ausdruck
1569     automatisch expandiert wird.  So wird '(x+1)^3' dann automatisch
1570     expandiert, wenn 'expop' gr��er oder gleich 3 ist.  Soll '(x+1)^n'
1571     mit der Funktion 'expand' expandiert werden, weil 'n' gr��er als
1572     'expop' ist, dann ist dies nur m�glich, wenn 'n' kleiner als
1573     'maxposex' ist.  Siehe auch 'expon'.
1574
1575 -- Eigenschaft: lassociative
1576
1577     'declare(f, lassociative)' deklariert 'f' als eine
1578     links-assoziative Funktion.  Zum Beispiel wird 'f (f (a,b), f (c,
1579     d))' zu 'f (f (f (a, b), c), d)' vereinfacht.
1580
1581     Siehe auch die Eigenschaft 'rassociative' und die Funktion
1582     'declare'.
1583
1584 -- Eigenschaft: linear
1585
1586     'declare(f, linear)' deklariert die Funktion 'f' als linear.
1587
1588     Hat die Funktion 'f' ein Argument, dann wird 'f(x + y)' zu 'f(x) +
1589     f(y)' und 'f(a*x)' zu 'a*f(x)' vereinfacht.
1590
1591     Ist 'f' eine Funktion mit zwei oder mehr Argumenten, ist die
1592     Linearit�t f�r das erste Argument definiert.  Zum Beispiel wird
1593     'f(a*x + b, x)' zu 'a f(x, x) + f(1, x) b' vereinfacht.
1594
1595     'linear' ist �quivalent zu 'additive' und 'outative'.  Siehe auch
1596     'opproperties' und die Funktion 'declare'.
1597
1598     Beispiel:
1599
1600          (%i1) 'sum (F(k) + G(k), k, 1, inf);
1601                                 inf
1602                                 ====
1603                                 \
1604          (%o1)                   >    (G(k) + F(k))
1605                                 /
1606                                 ====
1607                                 k = 1
1608          (%i2) declare (nounify (sum), linear);
1609          (%o2)                         done
1610          (%i3) 'sum (F(k) + G(k), k, 1, inf);
1611                               inf          inf
1612                               ====         ====
1613                               \            \
1614          (%o3)                 >    G(k) +  >    F(k)
1615                               /            /
1616                               ====         ====
1617                               k = 1        k = 1
1618
1619 -- Optionsvariable: maxnegex
1620     Standardwert: 1000
1621
1622     'maxnegex' ist der gr��te negative Exponent, der von der Funktion
1623     'expand' exandieren wird.  Siehe auch 'maxposex'.
1624
1625 -- Optionsvariable: maxposex
1626     Standardwert: 1000
1627
1628     'maxposex' ist der gr��te positive Exponent, der von der Funktion
1629     'expand' expandiert wird.  Siehe auch 'maxnegex'.
1630
1631 -- Eigenschaft: multiplicative
1632
1633     'declare(f, multiplicative)' deklariert die Funktion 'f' als
1634     multiplikativ.
1635
1636     Hat die Funktion 'f' ein Argument, dann wird 'f(x*y)' zu
1637     'f(x)*f(y)' vereinfacht.
1638
1639     Ist 'f' eine Funktion mit zwei oder mehr Argumenten, ist die
1640     Multiplikativit�t f�r das erste Argument definiert.  Zum Beispiel
1641     wird 'f(a*x + b, x)' zu 'f(g(x), x)*f(h(x), x)' vereinfacht.
1642
1643     Diese Vereinfachung werden nicht f�r Ausdr�cke der Form
1644     'product(x[i], i, m, n)' ausgef�hrt.
1645
1646     Siehe auch die Funktion 'declare'.
1647
1648     Beispiel:
1649
1650          (%i1) F2 (a * b * c);
1651          (%o1)                       F2(a b c)
1652          (%i2) declare (F2, multiplicative);
1653          (%o2)                         done
1654          (%i3) F2 (a * b * c);
1655          (%o3)                   F2(a) F2(b) F2(c)
1656
1657 -- Funktion: multthru (<expr>)
1658 -- Funktion: multthru (<expr_1>, <expr_2>)
1659
1660     Multipliziert einen oder mehrere Faktoren in eine Summe herein.
1661     'multthru' expandiert keine Potenzen von Summen.  'multthru' ist
1662     die effizienteste Methode, um Produkte von Summen
1663     auszumultiplizieren.  Da Maxima intern die Division als ein Produkt
1664     darstellt, kann 'multthru' auch angewendet werden, um einen Nenner
1665     in eine Summe hereinzumultiplizieren.
1666
1667     'multthru(<expr_1>, <expr_2>)' multipliziert jeden Term des
1668     Ausdrucks <expr_2> mit <expr_1>.  Der Ausdruck <expr_2> kann dabei
1669     eine Summe oder eine Gleichung sein.
1670
1671     Siehe auch die Funktionen 'expand' und 'function_distrib'.
1672
1673          (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1674                                1        x         f(x)
1675          (%o1)             - ----- + -------- - --------
1676                              x - y          2          3
1677                                      (x - y)    (x - y)
1678          (%i2) multthru ((x-y)^3, %);
1679                                     2
1680          (%o2)             - (x - y)  + x (x - y) - f(x)
1681          (%i3) ratexpand (%);
1682                                     2
1683          (%o3)                   - y  + x y - f(x)
1684          (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
1685                                  10  2              2  2
1686                           (b + a)   s  + 2 a b s + a  b
1687          (%o4)            ------------------------------
1688                                            2
1689                                       a b s
1690          (%i5) multthru (%);  /* note that this does not expand (b+a)^10 */
1691                                                  10
1692                                 2   a b   (b + a)
1693          (%o5)                  - + --- + ---------
1694                                 s    2       a b
1695                                     s
1696          (%i6) multthru (a.(b+c.(d+e)+f));
1697          (%o6)            a . f + a . c . (e + d) + a . b
1698          (%i7) expand (a.(b+c.(d+e)+f));
1699          (%o7)         a . f + a . c . e + a . c . d + a . b
1700
1701 -- Eigenschaft: nary
1702
1703     Erh�lt eine Funktion oder ein Operator mit der Funktion 'declare'
1704     die Eigenschaft 'nary', werden verschachtelte Anwendungen der
1705     Funktion oder des Operators wie zum Beispiel 'foo(x, foo(y, z))' zu
1706     'foo(x, y, z)' vereinfacht.  Die Deklaration als 'nary'
1707     unterscheidet sich von der Funktion 'nary'.  W�hrend der
1708     Funktionsaufruf einen neuen Operator definiert, wirkt sich die
1709     Deklaration nur auf die Vereinfachung aus.
1710
1711     Beispiel:
1712
1713          (%i1) H (H (a, b), H (c, H (d, e)));
1714          (%o1)               H(H(a, b), H(c, H(d, e)))
1715          (%i2) declare (H, nary);
1716          (%o2)                         done
1717          (%i3) H (H (a, b), H (c, H (d, e)));
1718          (%o3)                   H(a, b, c, d, e)
1719
1720 -- Optionsvariable: negdistrib
1721     Standardwert: 'true'
1722
1723     Hat 'negdistrib' den Wert 'true', wird die Zahl -1 in eine Summe
1724     hereinmultipliziert.  Zum Beispiel wird '-(x + y)' zu '- y - x'
1725     vereinfacht.  'true' ist der Standardwert von 'negdistrib'.
1726
1727     Erh�lt 'negdistrib' den Wert 'false' wird '-(x + y)' nicht
1728     vereinfacht.  'negdistrib' sollte sehr umsichtig und nur in
1729     speziellen F�llen f�r lokale Vereinfachungen genutzt werden.
1730
1731 -- Systemvariable: opproperties
1732
1733     'opproperties' ist eine Liste mit den Eigenschaften, die eine
1734     Funktion oder ein Operator erhalten kann und die die Vereinfachung
1735     der Funktionen und Operatoren kontrollieren.  Diese Eigenschaften
1736     erhalten die Funktionen und Operatoren mit der Funktion 'declare'.
1737     Es gibt weitere Eigenschaften, die Funktionen, Operatoren und
1738     Variablen erhalten k�nnen.  Die Systemvariable 'features' enth�lt
1739     eine vollst�ndige Liste der Eigenschaften, die in Maximas Datenbank
1740     eingetragen werden.  Dar�berhinaus k�nnen mit der Funktion
1741     'declare' noch Eigenschaften definiert werden, die in der
1742     Lisp-Eigenschaftsliste eingetragen werden.
1743
1744     Die folgenden Eigenschaften sind in der Liste 'opproperties'
1745     enthalten und kontrollieren die Vereinfachung von Funktionen und
1746     Operatoren:
1747
1748        linear          additive        multiplicative
1749        outative        commutative     symmetric
1750        antisymmetric   nary            lassociativ
1751        rassociative    evenfun         oddfun
1752
1753 -- Eigenschaft: outative
1754
1755     'declare(f, outative)' deklariert eine Funktion 'f' als outative.
1756     Hat der Operator oder die Funktion Argumente mit konstanten
1757     Faktoren, so werden diese konstanten Faktoren herausgezogen.
1758
1759     Hat die Funktion 'f' ein Argument, dann wird 'f(a*x)' zu 'a*f(x)'
1760     vereinfacht, wenn 'a' ein konstanter Faktor ist.
1761
1762     Ist 'f' eine Funktion mit zwei oder mehr Argumenten, ist die
1763     Outativit�t f�r das erste Argument definiert.  Zum Beispiel wird
1764     'f(a*g(x), x)' zu 'a*f(g(x),x)' vereinfacht, wenn 'a' ein
1765     konstanter Faktor ist.
1766
1767     Die Funktionen 'sum', 'integrate' und 'limit' haben die Eigenschaft
1768     'outative'.  Siehe auch die Funktion 'declare'.
1769
1770     Beispiel:
1771
1772          (%i1) F1 (100 * x);
1773          (%o1)                       F1(100 x)
1774          (%i2) declare (F1, outative);
1775          (%o2)                         done
1776          (%i3) F1 (100 * x);
1777          (%o3)                       100 F1(x)
1778          (%i4) declare (zz, constant);
1779          (%o4)                         done
1780          (%i5) F1 (zz * y);
1781          (%o5)                       zz F1(y)
1782
1783 -- Funktion: radcan (<expr>)
1784
1785     Die Funktion 'radcan' vereinfacht Ausdr�cke, die die
1786     Logarithmusfunktion, Exponentialfunktionen und Wurzeln enthalten.
1787
1788     Beispiele:
1789
1790          (%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
1791                                                     a/2
1792          (%o1)                            log(x + 1)
1793
1794          (%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
1795          (%o2)                                  2
1796
1797          (%i3) radcan((%e^x-1)/(1+%e^(x/2)));
1798                                               x/2
1799          (%o3)                              %e    - 1
1800
1801 -- Optionsvariable: radexpand
1802     Standardwert: 'true'
1803
1804     'radexpand' kontrolliert die Vereinfachung von Wurzeln.
1805
1806     Hat 'radexpand' den Wert 'all', werden die nten-Wurzeln der
1807     Faktoren eines Produktes, die eine n-te Potenz sind, aus der Wurzel
1808     herausgezogen.  Zum Beispiel vereinfacht 'sqrt(16*x^2' zu '4*x'.
1809
1810     Inbesondere vereinfacht der Ausdruck 'sqrt(x^2)' folgenderma�en:
1811
1812        * Hat 'radexpand' den Wert 'all' oder wurde 'assume(x>0)'
1813          ausgef�hrt, dann vereinfacht 'sqrt(x^2)' zu 'x'.
1814
1815        * Hat 'radexpand' den Wert 'true' und 'domain' ist 'real', dann
1816          vereinfacht 'sqrt(x^2)' zu 'abs(x)'.
1817
1818        * Hat 'radexpand' den Wert 'false' oder hat 'radexpand' den Wert
1819          'true' und 'domain' ist 'complex', dann wird 'sqrt(x^2)' nicht
1820          vereinfacht.
1821
1822 -- Eigenschaft: rassociative
1823
1824     'declare(f, rassociative)' deklariert die Funktion 'f' als
1825     rechts-assioziativ.  Zum Beispiel wird 'f(f(a, b), f(c, d))' zu
1826     'f(a, f(b, f(c, d)))' vereinfacht.
1827
1828     Siehe auch die Eigenschaft 'lassociative' und die Funktion
1829     'declare'.
1830
1831 -- Funktion: scsimp (<expr>, <rule_1>, ..., <rule_n>)
1832
1833     Sequential Comparative Simplification (Methode nach Stoute).
1834
1835     'scsimp' versucht den Ausdruck <expr> mit Hilfe der Regeln
1836     <rule_1>, ..., <rule_n> zu vereinfachen.  Die Regeln werden
1837     nacheinander solange angewendet, bis sich der Ausdruck nicht weiter
1838     vereinfacht.  F�hrt keine der Regeln zu einem Erfolg, wird der
1839     urspr�ngliche Ausdruck zur�ckgegeben.
1840
1841     'example(scsimp)' zeigt einige Beispiele.
1842
1843 -- Optionsvariable: simp
1844     Standardwert: 'true'
1845
1846     'simp' kontrolliert die Vereinfachung von Ausdr�cken.  Der
1847     Standardwert von 'simp' ist 'true' und Ausdr�cke werden
1848     vereinfacht.  'simp' ist auch ein Auswertungsschalter f�r die
1849     Funktion 'ev'.
1850
1851     Wird 'simp' als ein Auswertungschalter mit dem Wert 'false'
1852     genutzt, dann wird die Vereinfachung nur w�hrend der
1853     Auswertungsphase unterdr�ckt.  'simp' kann nicht die Vereinfachung
1854     unterdr�cken, die sich der Auswertung anschlie�t.
1855
1856     Beispiele:
1857
1858     Die Vereinfachung wird ausgeschaltet.  Der Ausdruck 'sin(1.0)' wird
1859     nicht zu einem numerischen Wert vereinfacht.  Der
1860     Auswertungsschalter 'simp' schaltet die Vereinfachung ein.
1861
1862          (%i1) simp:false;
1863          (%o1)                                false
1864          (%i2) sin(1.0);
1865          (%o2)                              sin(1.0)
1866          (%i3) sin(1.0),simp;
1867          (%o3)                          .8414709848078965
1868
1869     Die Vereinfachung wird wieder eingeschaltet.  Der
1870     Auswertungsschalter 'simp' kann die Vereinfachung nicht vollst�ndig
1871     unterdr�cken.  In der Ausgabe ist der Ausdruck vereinfacht, aber
1872     die Variable 'x' enth�lt einen nicht vereinfachten Ausdruck, da die
1873     Zuweisung noch w�hrend der Auswertungsphase des Ausdrucks
1874     vorgenommen wurde.
1875
1876          (%i4) simp:true;
1877          (%o4)                                true
1878          (%i5) x:sin(1.0),simp:false;
1879          (%o5)                          .8414709848078965
1880          (%i6) :lisp $X
1881          ((%SIN) 1.0)
1882
1883 -- Eigenschaft: symmetric
1884
1885     'declare(f, symmetric)' deklariert die Funktion 'f' als
1886     symmetrisch.  Zum Beispiel wird 'f(x, z, y)' zu 'f(x, y, z)'
1887     vereinfacht.
1888
1889     'commutative' entspricht 'symmetric' Siehe auch die Funktion
1890     'declare'.
1891
1892     Beispiel:
1893
1894          (%i1) S (b, a);
1895          (%o1)                        S(b, a)
1896          (%i2) declare (S, symmetric);
1897          (%o2)                         done
1898          (%i3) S (b, a);
1899          (%o3)                        S(a, b)
1900          (%i4) S (a, c, e, d, b);
1901          (%o4)                   S(a, b, c, d, e)
1902
1903 -- Funktion: xthru (<expr>)
1904
1905     Die Terme einer Summe des Ausdrucks <expr> werden so
1906     zusammengefasst, dass sie einen gemeinsamen Nenner haben.  Produkte
1907     und Potenzen von Summen werden dabei nicht expandiert.  Gemeinsame
1908     Faktoren im Z�hler und Nenner werden gek�rzt.
1909
1910     Es kann vorteilhaft sein, vor dem Ausf�hren von 'ratsimp' zun�chst
1911     mit 'xthru' die gemeinsamen Faktoren eines rationalen Ausdrucks zu
1912     k�rzen.
1913
1914     Siehe auch die Funktion 'combine'.
1915
1916     Beispiele:
1917
1918          (%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
1919                                          20
1920                           1       (x + 2)   - 2 y       x
1921          (%o1)        --------- + --------------- - ---------
1922                              19             20             20
1923                       (y + x)        (y + x)        (y + x)
1924          (%i2) xthru (%);
1925                                           20
1926                                    (x + 2)   - y
1927          (%o2)                     -------------
1928                                             20
1929                                      (y + x)
1930
1931
1932File: maxima.info,  Node: Mathematische Funktionen,  Next: Maximas Datenbank,  Prev: Vereinfachung,  Up: Top
1933
193410 Mathematische Funktionen
1935***************************
1936
1937* Menu:
1938
1939* Funktionen f�r Zahlen::
1940* Funktionen f�r komplexe Zahlen::
1941* Funktionen der Kombinatorik::
1942* Wurzel- Exponential- und Logarithmusfunktion::
1943* Winkelfunktionen::
1944* Hyperbelfunktionen::
1945* Zufallszahlen::
1946
1947
1948File: maxima.info,  Node: Funktionen f�r Zahlen,  Next: Funktionen f�r komplexe Zahlen,  Prev: Mathematische Funktionen,  Up: Mathematische Funktionen
1949
195010.1 Funktionen f�r Zahlen
1951==========================
1952
1953 -- Funktion: abs (<z>)
1954
1955     Die Funktion 'abs' ist die Betragsfunktion und f�r das numerische
1956     und symbolische Rechnen geeignet.  Ist das Argument <z> eine reelle
1957     oder komplexe Zahl wird der Betrag berechnet.  Wenn m�glich werden
1958     allgemeine Ausdr�cke mit der Betragsfunktion vereinfacht.  Maxima
1959     kann Ausdr�cke mit der Betragsfunktion integrieren und ableiten
1960     sowie Grenzwerte von Ausdr�cken mit der Betragsfunktion ermitteln.
1961     Das Paket 'abs_integrate' erweitert Maximas M�glichkeiten,
1962     Integrale mit der Betragsfunktion zu l�sen.
1963
1964     Die Betragsfunktion wird automatisch auf die Elemente von Listen
1965     und Matrizen sowie auf die beiden Seiten von Gleichungen
1966     angewendet.  Siehe 'distribute_over'.
1967
1968     Siehe die Funktion 'cabs', um den Betrag eines komplexen Ausdrucks
1969     oder einer Funktion zu berechnen.
1970
1971     Beispiele:
1972
1973     Berechnung des Betrages f�r reelle und komplexen Zahlen sowie
1974     numerische Konstanten und unendliche Gr��en.  Das erste Beispiel
1975     zeigt, wie die Betragsfunktion von Maxima auf die Elemente einer
1976     Liste angewendet wird.
1977
1978          (%i1) abs([-4, 0, 1, 1+%i]);
1979          (%o1)                  [4, 0, 1, sqrt(2)]
1980
1981          (%i2) abs((1+%i)*(1-%i));
1982          (%o2)                           2
1983          (%i3) abs(%e+%i);
1984                                          2
1985          (%o3)                    sqrt(%e  + 1)
1986          (%i4) abs([inf, infinity, minf]);
1987          (%o4)                   [inf, inf, inf]
1988
1989     Vereinfachung von Ausdr�cken mit der Betragsfunktion.
1990
1991          (%i5) abs(x^2);
1992                                          2
1993          (%o5)                          x
1994          (%i6) abs(x^3);
1995                                       2
1996          (%o6)                       x  abs(x)
1997
1998          (%i7) abs(abs(x));
1999          (%o7)                       abs(x)
2000          (%i8) abs(conjugate(x));
2001          (%o8)                       abs(x)
2002
2003     Ableitung und Integrale mit der Betragsfunktion.  Wird das Paket
2004     abs_integrate geladen, k�nnen weitere Integrale mit der
2005     Betragsfunktion gel�st werden.  Das letzte Beispiel zeigt die
2006     Laplacetransformation der Betragsfunktion.  Siehe 'laplace'.
2007
2008          (%i9) diff(x*abs(x),x),expand;
2009          (%o9)                       2 abs(x)
2010
2011          (%i10) integrate(abs(x),x);
2012                                       x abs(x)
2013          (%o10)                       --------
2014                                          2
2015
2016          (%i11) integrate(x*abs(x),x);
2017                                     /
2018                                     [
2019          (%o11)                     I x abs(x) dx
2020                                     ]
2021                                     /
2022
2023          (%i12) load(abs_integrate)$
2024          (%i13) integrate(x*abs(x),x);
2025                                2           3
2026                               x  abs(x)   x  signum(x)
2027          (%o13)               --------- - ------------
2028                                   2            6
2029
2030          (%i14) integrate(abs(x),x,-2,%pi);
2031                                         2
2032                                      %pi
2033          (%o14)                      ---- + 2
2034                                       2
2035
2036          (%i15) laplace(abs(x),x,s);
2037                                         1
2038          (%o15)                         --
2039                                          2
2040                                         s
2041
2042 -- Funktion: ceiling (<x>)
2043
2044     Die Funktion 'ceiling' ist f�r das numerische und symbolische
2045     Rechnen geeignet.
2046
2047     Ist das Argument <x> eine reelle Zahl, gibt 'ceiling' die kleinste
2048     ganze Zahl zur�ck, die gr��er oder gleich <x> ist.
2049
2050     Die Funktion 'ceiling' gibt auch dann einen numerischen Wert
2051     zur�ck, wenn das Argument ein konstanter Ausdruck ist, wie zum
2052     Beispiel '1+%e', der zu einer reellen Zahl ausgewertet werden kann.
2053     In diesem Fall wird der konstante Ausdruck in eine gro�e
2054     Gleitkommazahl umgewandelt, auf die die Funktion 'ceiling'
2055     angewendet wird.  Aufgrund von Rundungsfehlern bei der Umwandlung
2056     in Gleitkommazahlen kann es zu Fehlern bei der Berechnung von
2057     'ceiling' kommen.  Um diese zu minimieren, wird die Anzahl der
2058     Stellen 'fpprec' f�r die Berechnung von 'ceiling' um drei Stellen
2059     erh�ht.
2060
2061     Ist das Argument <expr> der Funktion ein komplexer Ausdruck, wird
2062     eine Substantivform zur�ckgegeben.
2063
2064     Wenn m�glich werden Ausdr�cke mit der Funktion 'ceiling' von Maxima
2065     vereinfacht.  Maxima kennt insbesondere Vereinfachungen f�r den
2066     Fall, dass das Argument der Funktion 'ceiling' ein Ausdruck mit den
2067     Funktionen 'floor' oder 'round' ist.  Weiterhin werden f�r die
2068     Vereinfachung die Aussagen und Fakten der aktiven Kontexte
2069     herangezogen.  Siehe *note Funktionen und Variablen f�r Fakten::.
2070
2071     'ceiling' wird automatisch auf die Elemente von Listen und Matrizen
2072     sowie auf die beiden Seiten von Gleichungen angewendet.  Siehe
2073     'distribute_over'.
2074
2075     Siehe auch die Funktionen 'floor' und 'round'.
2076
2077     Beispiele:
2078
2079          (%i1) ceiling(ceiling(x));
2080          (%o1)                      ceiling(x)
2081          (%i2) ceiling(floor(x));
2082          (%o2)                       floor(x)
2083          (%i3) declare (n, integer)$
2084          (%i4) ceiling([n, abs(n), max (n, 6)]);
2085          (%o4)               [n, abs(n), max(6, n)]
2086          (%i5) assume (x > 0, x < 1)$
2087          (%i6) ceiling (x);
2088          (%o6)                           1
2089
2090     Sind die Werte einer Funktion eine Teilmenge der ganzen Zahlen,
2091     kann diese als 'integervalued' deklariert werden.  Die Funktionen
2092     'ceiling' und 'floor' k�nnen diese Information nutzen, um Ausdr�cke
2093     zu vereinfachen.
2094
2095          (%i1) declare (f, integervalued)$
2096          (%i2) floor (f(x));
2097          (%o2)                         f(x)
2098          (%i3) ceiling (f(x) - 1);
2099          (%o3)                       f(x) - 1
2100
2101     Maxima kennt das Integral der Funktion 'ceiling'.
2102
2103          (%i1) integrate(ceiling(x),x);
2104                         (- ceiling(x) + 2 x + 1) ceiling(x)
2105          (%o1)          -----------------------------------
2106                                          2
2107
2108 -- Funktion: entier (<x>)
2109
2110     'entier' ist eine andere Bezeichnung f�r die Funktion 'floor'.
2111     Siehe 'floor'.
2112
2113 -- Funktion: floor (<x>)
2114
2115     Die Funktion 'floor' ist f�r das numerische und symbolische Rechnen
2116     geeignet.
2117
2118     Ist das Argument <x> eine reelle Zahl, gibt 'floor' die gr��te
2119     ganze Zahl zur�ck, die kleiner oder gleich <x> ist.
2120
2121     Die Funktion 'floor' gibt auch dann einen numerischen Wert zur�ck,
2122     wenn das Argument ein konstanter Ausdruck ist, wie zum Beispiel
2123     '1+%e', der zu einer reellen Zahl ausgewertet werden kann.  In
2124     diesem Fall wird der konstante Ausdruck in eine gro�e
2125     Gleitkommazahl umgewandelt, auf die die Funktion 'floor' angewendet
2126     wird.  Aufgrund von Rundungsfehlern bei der Umwandlung in
2127     Gleitkommazahlen kann es zu Fehlern bei der Berechnung von 'floor'
2128     kommen.  Um diese zu minimieren, wird die Anzahl der Stellen
2129     'fpprec' f�r die Berechnung von 'floor' um drei Stellen erh�ht.
2130
2131     Ist das Argument <x> der Funktion ein komplexer Ausdruck, wird eine
2132     Substantivform zur�ckgegeben.
2133
2134     Wenn m�glich werden Ausdr�cke mit der Funktion 'floor' von Maxima
2135     vereinfacht.  Maxima kennt insbesondere Vereinfachungen f�r den
2136     Fall, dass das Argument der Funktion 'floor' ein Ausdruck mit den
2137     Funktionen 'ceiling' oder 'round' ist.  Weiterhin werden f�r die
2138     Vereinfachung die Aussagen und Fakten der aktiven Kontexte
2139     herangezogen.  Siehe *note Funktionen und Variablen f�r Fakten::.
2140
2141     'floor' wird automatisch auf die Elemente von Listen und Matrizen
2142     sowie auf die beiden Seiten von Gleichungen angewendet.  Siehe
2143     'distribute_over'.
2144
2145     Siehe auch die Funktionen 'ceiling' und 'round'.
2146
2147     Beispiele:
2148
2149          (%i1) floor(ceiling(x));
2150          (%o1)                      ceiling(x)
2151          (%i2) floor(floor(x));
2152          (%o2)                       floor(x)
2153          (%i3) declare(n, integer);
2154          (%o3)                         done
2155          (%i4) floor([n, abs(n), min (n, 6)]);
2156          (%o4)                [n, abs(n), min(6, n)]
2157          (%i5) assume(x>0, x<1)$
2158          (%i6) floor(x);
2159          (%o6)                           0
2160
2161     Sind die Werte einer Funktion eine Teilmenge der ganzen Zahlen,
2162     kann diese als 'integervalued' deklariert werden.  Die Funktionen
2163     'ceiling' und 'floor' k�nnen diese Information nutzen, um Ausdr�cke
2164     zu vereinfachen.
2165
2166          (%i1) declare (f, integervalued)$
2167          (%i2) floor(f(x));
2168          (%o2)                         f(x)
2169          (%i3) ceiling(f(x) - 1);
2170          (%o3)                       f(x) - 1
2171
2172     Maxima kennt das Integral der Funktion 'floor'.
2173
2174          (%i6) integrate(floor(x),x);
2175                           (- floor(x) + 2 x - 1) floor(x)
2176          (%o6)            -------------------------------
2177                                          2
2178
2179 -- Funktion: fix (<x>)
2180
2181     'fix' ist eine andere Bezeichnung f�r die Funktion 'floor'.  Siehe
2182     'floor'.
2183
2184 -- Funktion: lmax (<L>)
2185
2186     Ist das Argument <L> eine Liste oder Menge, wird die Funktion 'max'
2187     auf die Elemente der Liste oder Menge angewendet und das Ergebnis
2188     zur�ckgegeben.  Ist <L> keine Liste oder Menge, signalisiert Maxima
2189     einen Fehler.
2190
2191     Beispiel:
2192
2193          (%i1) L:[1+%e, %pi, 3];
2194          (%o1)                   [%e + 1, %pi, 3]
2195          (%i1) lmax(L);
2196          (%o1)                        %e + 1
2197
2198 -- Funktion: lmin (<L>)
2199
2200     Ist das Argument <L> eine Liste oder Menge, wird die Funktion 'min'
2201     auf die Elemente der Liste oder Menge angewendet und das Ergebnis
2202     zur�ckgegeben.  Ist <L> keine Liste oder Menge, signalisiert Maxima
2203     einen Fehler.
2204
2205     Beispiel:
2206
2207          (%i1) L:[1+%e, %pi, 3];
2208          (%o1)                   [%e + 1, %pi, 3]
2209          (%i2) lmin(L);
2210          (%o2)                           3
2211
2212 -- Funktion: max (<x_1>, ..., <x_n>)
2213
2214     Sind alle Argumente <x_1>, ..., <x_n> Zahlen oder konstante
2215     Ausdr�cke wie zum Beispiel '1+%e' oder 'sin(1)', dann wird der
2216     gr��te Zahlenwert zur�ckgegeben.  Sind symbolische Variablen oder
2217     allgemeine Ausdr�cke unter den Argumenten, gibt Maxima einen
2218     vereinfachten Ausdruck zur�ck.  Die unendliche Gr��en 'inf' und
2219     'minf' k�nnen als Argument auftreten.
2220
2221     Die Vereinfachung der Funktion 'max' kann kontrolliert werden, in
2222     dem mit der Funktion 'put' dem Symbol 'trylevel' zu der Eigenschaft
2223     'maxmin' ein Wert zwischen 1 bis 3 gegeben wird.  Folgende Werte
2224     k�nnen mit der Funktion 'put' gesetzt werden:
2225
2226     'put(trylevel, 1, maxmin)'
2227          'trylevel' hat den Wert 1.  Das ist der Standardwert.  Maxima
2228          f�hrt keine besonderen Vereinfachungen aus.
2229     'put(trylevel, 2, maxmin)'
2230          Maxima wendet die Vereinfachung 'max(e,-e) --> |e|' an.
2231     'put(trylevel, 3, maxima)'
2232          Maxima wendet die Vereinfachung 'max(e,-e) --> |e|' an und
2233          versucht Ausdr�cke zu eliminieren, die zwischen zwei anderen
2234          Argumenten liegen.  So wird zum Beispiel 'max(x, 2*x, 3*x)' zu
2235          'max(x, 3*x)' vereinfacht.
2236
2237     Mit dem Kommando 'get(trylevel, maxmin)' wird der aktuelle Wert f�r
2238     das Symbol 'trylevel' angezeigt.  Siehe die Funktion 'get'.
2239
2240     'max' ber�cksichtigt bei der Vereinfachung von Ausdr�cken die
2241     Aussagen und Fakten der aktiven Kontexte.  Siehe das Kapitel *note
2242     Funktionen und Variablen f�r Fakten::.
2243
2244     Beispiele:
2245
2246          (%i1) max(1.6, 3/2, 1);
2247          (%o1)                          1.6
2248          (%i2) max(1.5b0,1.5,3/2);
2249                                          3
2250          (%o2)                           -
2251                                          2
2252          (%i3) max(%e,%pi,1,2,3);
2253          (%o3)                          %pi
2254          (%i4) max(1+%e,%pi,1,2,3);
2255          (%o4)                        %e + 1
2256          (%i5) max(minf,inf);
2257          (%o5)                          inf
2258          (%i6) assume(a>b);
2259          (%o6)                        [a > b]
2260          (%i7) max(a,b);
2261          (%o7)                           a
2262
2263 -- Funktion: min (<x_1>, ..., <x_n>)
2264
2265     Sind alle Argumente <x_1>, ..., <x_n> Zahlen oder konstante
2266     Ausdr�cke wie zum Beispiel '1+%e' oder 'sin(1)', dann wird der
2267     kleinste Zahlenwert zur�ckgegeben.  Sind symbolische Variablen oder
2268     allgemeine Ausdr�cke unter den Argumenten, gibt Maxima einen
2269     vereinfachten Ausdruck zur�ck.  Die unendliche Gr��en 'inf' und
2270     'minf' k�nnen als Argument auftreten.
2271
2272     Die Vereinfachung der Funktion 'min' kann kontrolliert werden, in
2273     dem mit der Funktion 'put' dem Symbol 'trylevel' zu der Eigenschaft
2274     'maxmin' ein Wert zwischen 1 bis 3 gegeben wird.  Folgende Werte
2275     k�nnen mit der Funktion 'put' gesetzt werden:
2276
2277     'put(trylevel, 1, maxmin)'
2278          'trylevel' hat den Wert 1.  Das ist der Standardwert.  Maxima
2279          f�hrt keine besonderen Vereinfachungen aus.
2280     'put(trylevel, 2, maxmin)'
2281          Maxima wendet die Vereinfachung 'min(e,-e) --> |e|' an.
2282     'put(trylevel, 3, maxima)'
2283          Maxima wendet die Vereinfachung 'min(e,-e) --> |e|' an und
2284          versucht Ausdr�cke zu eliminieren, die zwischen zwei anderen
2285          Argumenten liegen.  So wird zum Beispiel 'min(x, 2*x, 3*x)' zu
2286          'min(x, 3*x)' vereinfacht.
2287
2288     Mit dem Kommando 'get(trylevel, maxmin)' wird der aktuelle Wert f�r
2289     das Symbol 'trylevel' angezeigt.  Siehe die Funktion 'get'.
2290
2291     'min' ber�cksichtigt bei der Vereinfachung von Ausdr�cken die
2292     Aussagen und Fakten der aktiven Kontexte.  Siehe das Kapitel
2293     Funktionen und Variablen f�r Fakten.
2294
2295     Beispiele:
2296
2297          (%i1) min(1.6, 3/2, 1);
2298          (%o1)                           1
2299          (%i2) min(1.5b0,1.5,3/2);
2300                                          3
2301          (%o2)                           -
2302                                          2
2303          (%i3) min(%e,%pi,3);
2304          (%o3)                          %e
2305          (%i4) min(1+%e,%pi,3);
2306          (%o4)                           3
2307          (%i5) min(minf,inf);
2308          (%o5)                         minf
2309          (%i6) assume(a>b);
2310          (%o6)                        [a > b]
2311          (%i7) min(a,b);
2312          (%o7)                           b
2313
2314 -- Funktion: round (<x>)
2315
2316     Die Funktion 'round' ist f�r das numerische und symbolische Rechnen
2317     geeignet.
2318
2319     Ist das Argument <x> eine reelle Zahl, gibt 'round' die am n�chsten
2320     liegende ganze Zahl zur�ck.  Vielfache von 1/2 werden auf die
2321     n�chste gerade ganze Zahl gerundet.
2322
2323     Die Funktion 'round' gibt auch dann einen numerischen Wert zur�ck,
2324     wenn das Argument ein konstanter Ausdruck ist, wie zum Beispiel
2325     '1+%e', der zu einer reellen Zahl ausgewertet werden kann.  In
2326     diesem Fall wird der konstante Ausdruck in eine gro�e
2327     Gleitkommazahl umgewandelt, auf die die Funktion 'round' angewendet
2328     wird.  Aufgrund von Rundungsfehlern bei der Umwandlung in
2329     Gleitkommazahlen kann es zu Fehlern bei der Berechnung von 'round'
2330     kommen.  Um diese zu minimieren, wird die Anzahl der Stellen
2331     'fpprec' f�r die Berechnung von 'round' um drei Stellen erh�ht.
2332
2333     Ist das Argument <x> der Funktion ein komplexer Ausdruck, wird eine
2334     Substantivform zur�ckgegeben.
2335
2336     Wenn m�glich werden Ausdr�cke mit der Funktion 'round' von Maxima
2337     vereinfacht.  Maxima kennt insbesondere Vereinfachungen f�r den
2338     Fall, dass das Argument der Funktion 'round' ein Ausdruck mit den
2339     Funktionen 'ceiling' oder 'floor' ist.  Weiterhin werden f�r die
2340     Vereinfachung die Aussagen und Fakten der aktiven Kontexte
2341     herangezogen.  Siehe *note Funktionen und Variablen f�r Fakten::.
2342
2343     'round' wird automatisch auf die Elemente von Listen und Matrizen
2344     sowie auf die beiden Seiten von Gleichungen angewendet.  Siehe
2345     'distribute_over'.
2346
2347     Siehe auch die Funktionen 'ceiling' und 'floor'.
2348
2349     Beispiele:
2350
2351          (%i1) round(floor(x));
2352          (%o1)                       floor(x)
2353          (%i2) round(round(x));
2354          (%o2)                       round(x)
2355          (%i3) declare(n, integer);
2356          (%o3)                         done
2357          (%i4) round([n, abs(n), min(n,6)]);
2358          (%o4)                [n, abs(n), min(6, n)]
2359
2360     Sind die Werte einer Funktion eine Teilmenge der ganzen Zahlen,
2361     kann diese als 'integervalued' deklariert werden.  Die Funktion
2362     'round' kann diese Information nutzen, um Ausdr�cke zu
2363     vereinfachen.
2364
2365          (%i1) declare(f, integervalued);
2366          (%o1)                         done
2367          (%i2) round(f(x));
2368          (%o2)                         f(x)
2369          (%i3) round(f(x) - 1);
2370          (%o3)                       f(x) - 1
2371
2372 -- Funktion: signum (<z>)
2373
2374     Die Signumfunktion 'signum' ist f�r das numerische und symbolische
2375     Rechnen geeignet.  Ist das Argument <z> eine Zahl, ist das Ergebnis
2376     0, 1 oder -1, wenn die Zahl Null, positiv oder negativ ist.  Das
2377     Argument kann auch ein konstanter Ausdruck wie '%pi' oder '1+%e'
2378     sein.  Ist das Argument <z> eine komplexe Zahl, vereinfacht die der
2379     Ausdruck 'signum(z)' zu 'z/abs(z)'.
2380
2381     Ist das Argument <z> keine Zahl oder kein konstanter Ausdruck,
2382     versucht Maxima den Ausdruck zu vereinfachen.  Maxima kann die
2383     Funktion 'signum' differenzieren.  Wird das Paket abs_integrate
2384     geladen, kann Maxima Integrale mit der Funktion 'signum' l�sen.
2385
2386     'signum' wird automatisch auf die Elemente von Listen und Matrizen
2387     sowie auf die beiden Seiten von Gleichungen angewendet.  Siehe
2388     'distribute_over'.
2389
2390     Beispiele:
2391
2392     Ergebnisse f�r verschiedene Zahlen und konstante Ausdr�cke.  Die
2393     Beispiele zeigen, dass das Ergebnis der Signumfunktion den Typ der
2394     Zahl erh�lt.  Die unendlichen Gr��en 'minf' und 'inf' k�nnen als
2395     Argument auftreten.
2396
2397          (%i1) signum([-1.5, 0, 0.0, 1.5, 1.5b0, %e, sin(1), cos(4)]);
2398          (%o1)        [- 1.0, 0, 0.0, 1.0, 1.0b0, 1, 1, - 1]
2399          (%i2) signum(1+%i);
2400                                    %i         1
2401          (%o2)                   ------- + -------
2402                                  sqrt(2)   sqrt(2)
2403          (%i3) signum([minf,inf]);
2404          (%o3)                      [- 1, 1]
2405
2406     Vereinfachungen der Signumfunktion.
2407
2408          (%i3) signum(x*y);
2409          (%o3)                  signum(x) signum(y)
2410          (%i4) signum(-x);
2411          (%o4)                      - signum(x)
2412
2413     Wird das Paket abs_integrate geladen, kann Maxima Integrale mit der
2414     Signumfunktion l�sen.  Ausdr�cke mit der Signumfunktion k�nnen
2415     differenziert werden.
2416
2417          (%i5) load(abs_integrate)$
2418
2419          (%i6) integrate(signum(x),x);
2420          (%o6)                        abs(x)
2421
2422          (%i7) integrate(sin(x)*signum(x),x);
2423          (%o7)               (1 - cos(x)) signum(x)
2424
2425          (%i7) diff(%,x);
2426          (%o7)                  signum(x) sin(x)
2427
2428
2429File: maxima.info,  Node: Funktionen f�r komplexe Zahlen,  Next: Funktionen der Kombinatorik,  Prev: Funktionen f�r Zahlen,  Up: Mathematische Funktionen
2430
243110.2 Funktionen f�r komplexe Zahlen
2432===================================
2433
2434 -- Funktion: cabs (<expr>)
2435
2436     Berechnet den Betrag eines komplexen Ausdrucks <expr>.  Im
2437     Unterschied zu der Funktion 'abs', zerlegt die Funktion 'cabs'
2438     einen komplexen Ausdruck immer in einen Realteil und Imagin�rteil,
2439     um den komplexen Betrag zu berechnen.  Sind <x> und <y> zwei reelle
2440     Variablen oder Ausdr�cke, berechnet die Funktion 'cabs' den Betrag
2441     des komplexen Ausdrucks 'x + %i*y' als:
2442                                     2    2
2443                               sqrt(y  + x )
2444
2445     Die Funktion 'cabs' nutzt Symmetrieeigenschaften und implementierte
2446     Eigenschaften komplexer Funktionen, um den Betrag eines Ausdrucks
2447     zu berechnen.  Sind solche Eigenschaften f�r eine Funktion
2448     vorhanden, k�nnen diese mit der Funktion 'properties' angezeigt
2449     werden.  Eigenschaften, die das Ergebnis der Funktion 'cabs'
2450     bestimmen, sind: 'mirror symmetry', 'conjugate function' und
2451     'complex characteristic'.
2452
2453     'cabs' ist eine Verbfunktion, die nicht f�r das symbolische Rechnen
2454     geeignet ist.  F�r das symbolische Rechnen wie der Integration oder
2455     der Ableitung von Ausdr�cken mit der Betragsfunktion muss die
2456     Funktion 'abs' verwendet werden.
2457
2458     Das Ergebnis der Funktion 'cabs' kann die Betragsfunktion 'abs' und
2459     den Arkustangens 'atan2' enthalten.
2460
2461     'cabs' wird automatisch auf die Elemente von Listen und Matrizen
2462     sowie auf die beiden Seiten von Gleichungen angewendet.
2463
2464     Siehe auch die Funktionen 'rectform', 'realpart', 'imagpart',
2465     'carg', 'conjugate', und 'polarform' f�r das Rechnen mit komplexen
2466     Zahlen.
2467
2468     Beispiele:
2469
2470     Zwei Beispiele mit der Wurzelfunktion 'sqrt' und der Sinusfunktion
2471     'sin'.
2472
2473          (%i1) cabs(sqrt(1+%i*x));
2474                                       2     1/4
2475          (%o1)                      (x  + 1)
2476          (%i2) cabs(sin(x+%i*y));
2477                              2        2         2        2
2478          (%o2)       sqrt(cos (x) sinh (y) + sin (x) cosh (y))
2479
2480     Die Funktion 'erf' hat Spiegelsymmetrie, die hier f�r die
2481     Berechnung des komplexen Betrages angewendet wird.
2482
2483          (%i3) cabs(erf(x+%i*y));
2484                                                    2
2485                     (erf(%i y + x) - erf(%i y - x))
2486          (%o3) sqrt(--------------------------------
2487                                    4
2488                                                                         2
2489                                          (erf(%i y + x) + erf(%i y - x))
2490                                        - --------------------------------)
2491                                                         4
2492
2493     Maxima kennt komplexe Eigenschaften der Besselfunktionen, um den
2494     komplexen Betrag zu vereinfachen.  Dies ist ein Beispiel f�r die
2495     Besselfunktion 'bessel_j'.
2496
2497          (%i4) cabs(bessel_j(1,%i));
2498          (%o4)                 abs(bessel_j(1, %i))
2499
2500 -- Funktion: carg (<expr>)
2501
2502     Gibt das komplexe Argument des Ausdrucks <expr> zur�ck.  Das
2503     komplexe Argument ist ein Winkel 'theta' im Intervall '(-%pi, %pi)'
2504     derart, dass <expr> = 'r exp (theta %i)' gilt, wobei 'r' den Betrag
2505     des komplexen Ausdrucks <expr> bezeichnet.  Das ist die Polarform
2506     des Ausdrucks, wie sie auch von der Funktion 'polarform'
2507     zur�ckgegeben wird.  Der Betrag des komplexen Ausdrucks kann mit
2508     der Funktion 'cabs' berechnet werden.
2509
2510     Das Ergebnis der Funktion 'carg' kann die Funktion 'atan2'
2511     enthalten.
2512
2513     'carg' wird automatisch auf die Elemente von Listen und Matrizen
2514     sowie auf die beiden Seiten von Gleichungen angewendet.  Siehe
2515     'distribute_over'.
2516
2517     Die Funktion 'carg' ist eine Verbfunktion, mit der nicht symbolisch
2518     gerechnet werden kann.
2519
2520     Siehe auch die Funktionen 'rectform', 'realpart' und 'imagpart'
2521     sowie die Funktionen 'cabs' und 'conjugate'.
2522
2523     Beispiele:
2524
2525          (%i1) carg (1);
2526          (%o1)                           0
2527          (%i2) carg (1 + %i);
2528                                         %pi
2529          (%o2)                          ---
2530                                          4
2531          (%i3) carg (exp (%i));
2532          (%o3)                           1
2533
2534          (%i4) carg (exp (3/2 * %pi * %i));
2535                                          %pi
2536          (%o4)                         - ---
2537                                           2
2538          (%i5) carg(exp(x+%i*y));
2539          (%o5)                atan2(sin(y), cos(y))
2540
2541          (%i6) carg(sqrt(x+%i*y));
2542                                    atan2(y, x)
2543          (%o6)                     -----------
2544                                         2
2545          (%i7) carg(sqrt(1+%i*y));
2546                                      atan(y)
2547          (%o7)                       -------
2548                                         2
2549
2550 -- Funktion: conjugate (<expr>)
2551
2552     Gibt den konjugiert komplexen Wert des Ausdrucks <expr> zur�ck.
2553     Sind <x> und <y> reelle Variablen oder Ausdr�cke, dann hat der
2554     Ausdruck 'x + %i*y' das Ergebnis 'x - %i*y'.  Die Funktion
2555     'conjugate' ist f�r numerische und symbolische Rechnungen geeignet.
2556
2557     Maxima kennt Regeln, um den konjugierten Wert f�r Summen, Produkte
2558     und Quotienten von komplexen Ausdr�cken zu vereinfachen.  Weiterhin
2559     kennt Maxima Symmetrieeigenschaften und komplexe Eigenschaften von
2560     Funktionen, um den konjugierten Wert mit diesen Funktionen zu
2561     vereinfachen.  Sind solche Eigenschaften f�r eine Funktion
2562     vorhanden, k�nnen diese mit der Funktion 'properties' angezeigt
2563     werden.  Eigenschaften, die das Ergebnis der Funktion 'conjugate'
2564     bestimmen, sind: 'mirror symmetry', 'conjugate function' und
2565     'complex characteristic'.
2566
2567     'conjugate' wird automatisch auf die Elemente von Listen und
2568     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2569     Siehe 'distribute_over'.
2570
2571     F�r das Rechnen mit komplexen Ausdr�cken siehe auch die Funktionen
2572     'cabs' und 'carg' sowie 'rectform' und 'polarform'.
2573
2574     Beispiele:
2575
2576     Beispiele mit reellen, imagin�ren und komplexen Variablen.
2577
2578          (%i1) declare ([x, y], real, [z1, z2], complex, j, imaginary);
2579          (%o1)                         done
2580          (%i2) conjugate(x + %i*y);
2581          (%o2)                       x - %i y
2582          (%i3) conjugate(z1*z2);
2583          (%o3)              conjugate(z1) conjugate(z2)
2584          (%i4) conjugate(j/z2);
2585                                           j
2586          (%o4)                    - -------------
2587                                     conjugate(z2)
2588
2589     Im Folgenden nutzt Maxima Symmetrieeigenschaften, um den konjugiert
2590     komplexen Wert der Funktionen 'gamma' und 'sin' zu berechnen.  Die
2591     Logarithmusfunktion 'log' hat Spiegelsymmetrie, wenn das Argument
2592     einen positiven Realteil hat.
2593
2594          (%i5) conjugate(gamma(x+%i*y));
2595          (%o5)                    gamma(x - %i y)
2596          (%i6) conjugate(sin(x+%i*y));
2597          (%o6)                    - sin(%i y - x)
2598          (%i7) conjugate(log(x+%i*y));
2599          (%o7)               conjugate(log(%i y + x))
2600          (%i8) conjugate(log(1+%i*y));
2601          (%o8)                     log(1 - %i y)
2602
2603 -- Funktion: imagpart (<expr>)
2604
2605     Gibt den Imagin�rteil des Ausrucks <expr> zur�ck.  Intern berechnet
2606     Maxima den Imagin�rteil mit der Funktion 'rectform', die einen
2607     Ausdruck in den Realteil und in den Imagin�rteil zerlegt.  Daher
2608     treffen die Ausf�hrungen zu 'rectform' auch auf die Funktion
2609     'imagpart' zu.
2610
2611     Wie die Funktion 'rectform' ist auch die Funktion 'imagpart' eine
2612     Verbfunktion, mit der nicht symbolisch gerechnet werden kann.
2613
2614     'imagpart' wird automatisch auf die Elemente von Listen und
2615     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2616     Siehe 'distribute_over'.
2617
2618     Mit der Funktion 'realpart' wird der Realteil eines Ausdrucks
2619     berechnet.
2620
2621     Siehe auch die Funktionen 'cabs', 'carg' und 'conjugate' f�r das
2622     Rechnen mit komplexen Zahlen.  Mit der Funktion 'polarform' kann
2623     ein komplexer Ausdruck in die Polarform gebracht werden.
2624
2625     Beispiele:
2626
2627     F�r weitere Erl�uterungen dieser Beispiele siehe auch die Funktion
2628     'rectform'.
2629
2630          (%i1) imagpart((2-%i)/(1-%i));
2631                                          1
2632          (%o1)                           -
2633                                          2
2634          (%i2) imagpart(sin(x+%i*y));
2635          (%o2)                    cos(x) sinh(y)
2636          (%i3) imagpart(gamma(x+%i*y));
2637                       %i (gamma(x - %i y) - gamma(%i y + x))
2638          (%o3)        --------------------------------------
2639                                         2
2640          (%i4) imagpart(bessel_j(1,%i));
2641          (%o4)                    bessel_j(1, %i)
2642
2643 -- Funktion: polarform (<expr>)
2644
2645     Gibt den Ausdruck <expr> in der Polarform 'r %e^(%i theta)' zur�ck.
2646     'r' ist der Betrag des komplexen Ausdrucks, wie er auch mit der
2647     Funktion 'cabs' berechnet werden kann.  'theta' ist das Argument
2648     des komplexen Ausdrucks, das mit der Funktion 'carg' berechnet
2649     werden kann.
2650
2651     Maxima kennt komplexe Eigenschaften von Funktionen, die bei der
2652     Berechnung der Polarform angewendet werden.  Siehe die Funktion
2653     'cabs' f�r weitere Erl�uterungen.
2654
2655     Wenn mit komplexen Ausdr�cken in der Polarform gerechnet werden
2656     soll, ist es hilfreich die Optionsvariable '%emode' auf den Wert
2657     'false' zu setzen.  Damit wird verhindert, dass Maxima komplexe
2658     Ausdr�cke mit der Exponentialfunktion 'exp' automatisch in die
2659     Standardform vereinfacht.
2660
2661     'polarform' wird automatisch auf die Elemente von Listen und
2662     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2663     Siehe 'distribute_over'.
2664
2665     Die Funktion 'polarform' ist eine Verbfunktion, mit der nicht
2666     symbolisch gerechnet werden kann.
2667
2668     Siehe auch die Funktionen 'cabs', 'carg' und 'conjugate' f�r das
2669     Rechnen mit komplexen Zahlen.  Mit der Funktion 'rectform' kann ein
2670     komplexer Ausdruck in die Standardform gebracht werden.
2671
2672     Beispiele:
2673
2674     Die allgemeine Polarform eines komplexen Ausdrucks.  Die Variablen
2675     <x> und <y> werden von Maxima als reell angenommen.
2676
2677          (%i1) polarform(x+%i*y);
2678                                 2    2    %i atan2(y, x)
2679          (%o1)            sqrt(y  + x ) %e
2680
2681     Die Polarform einer komplexen Zahl und eines Ausdrucks mit einer
2682     reellen Variablen <x>.
2683
2684          (%i2) polarform(4/5+3*%i/5);
2685                                     %i atan(3/4)
2686          (%o2)                    %e
2687          (%i3) polarform(sqrt(1+%i*x));
2688                                            %i atan(x)
2689                                            ----------
2690                                2     1/4       2
2691          (%o3)               (x  + 1)    %e
2692
2693     Wenn in der Polarform gerechnet werden soll, ist es hilfreich die
2694     Optionsvariable '%emode' auf den Wert 'false' zu setzen.  Damit
2695     wird verhindert, dass Maxima komplexe Ausdr�cke mit der
2696     Exponentialfunktion 'exp' automatisch in eine Standardform
2697     vereinfacht.
2698
2699          (%i4) z:polarform(1+%i);
2700                                            %i %pi
2701                                            ------
2702                                              4
2703          (%o4)                   sqrt(2) %e
2704          (%i5) z^3;
2705                               3/2    %i         1
2706          (%o5)               2    (------- - -------)
2707                                    sqrt(2)   sqrt(2)
2708          (%i6) %emode:false;
2709          (%o6)                         false
2710          (%i7) z^3;
2711                                          3 %i %pi
2712                                          --------
2713                                    3/2      4
2714          (%o7)                    2    %e
2715
2716 -- Funktion: realpart (<expr>)
2717
2718     Gibt den Realteil des Ausdrucks <expr> zur�ck.  Intern berechnet
2719     Maxima den Realteil mit der Funktion 'rectform', die einen Ausdruck
2720     in den Realteil und in den Imagin�rteil zerlegt.  Daher treffen die
2721     Ausf�hrungen zu 'rectform' auch auf die Funktion 'realpart' zu.
2722
2723     Wie die Funktion 'rectform' ist auch die Funktion 'realpart' eine
2724     Verbfunktion, mit der nicht symbolisch gerechnet werden kann.
2725
2726     'realpart' wird automatisch auf die Elemente von Listen und
2727     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2728     Siehe 'distribute_over'.
2729
2730     Mit der Funktion 'imagpart' wird der Imagin�rteil eines Ausdrucks
2731     berechnet.
2732
2733     Siehe auch die Funktionen 'cabs', 'carg' und 'conjugate' f�r das
2734     Rechnen mit komplexen Zahlen.  Mit der Funktion 'polarform' kann
2735     ein komplexer Ausdruck in die Polarform gebracht werden.
2736
2737     Beispiele:
2738
2739     F�r weitere Erl�uterungen dieser Beispiele siehe auch die Funktion
2740     'rectform'.
2741
2742          (%i1) realpart((2-%i)/(1-%i));
2743                                          3
2744          (%o1)                           -
2745                                          2
2746          (%i2) realpart(sin(x+%i*y));
2747          (%o2)                    sin(x) cosh(y)
2748          (%i3) realpart(gamma(x+%i*y));
2749                          gamma(%i y + x) + gamma(x - %i y)
2750          (%o3)           ---------------------------------
2751                                          2
2752          (%i4) realpart(bessel_j(1,%i));
2753          (%o4)                           0
2754
2755 -- Funktion: rectform (<expr>)
2756
2757     Zerlegt den Ausdruck <expr> in den Realteil 'a' und den
2758     Imagin�rteil 'b' und gibt den komplexen Ausdruck in der
2759     Standardform 'a + b %i' zur�ck.
2760
2761     Die Funktion 'rectform' nutzt Symmetrieeigenschaften und
2762     implementierte Eigenschaften komplexer Funktionen, um den Realteil
2763     und Imagin�rteil eines komplexen Ausdrucks zu berechnen.  Sind
2764     solche Eigenschaften f�r eine Funktion vorhanden, k�nnen diese mit
2765     der Funktion 'properties' angezeigt werden.  Eigenschaften, die das
2766     Ergebnis der Funktion 'rectform' bestimmen, sind: 'mirror
2767     symmetry', 'conjugate function' und 'complex characteristic'.
2768
2769     'rectform' ist eine Verbfunktion, die nicht f�r das symbolische
2770     Rechnen geeignet ist.
2771
2772     'rectform' wird automatisch auf die Elemente von Listen und
2773     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2774     Siehe 'distribute_over'.
2775
2776     Die Funktionen 'realpart' und 'imagpart' geben jeweils allein den
2777     Realteil und den Imagin�rteil eines Ausdrucks zur�ck.  Um einen
2778     Ausdruck in die Polarform zu bringen, kann die Funktion 'polarform'
2779     verwendet werden.
2780
2781     Siehe auch die Funktionen 'cabs', 'carg' und 'conjugate' f�r das
2782     Rechnen mit komplexen Zahlen.
2783
2784     Beispiele:
2785
2786     Zerlegung eines komplexen Ausdrucks und der Sinusfunktion 'sin' in
2787     den Realteil und Imagin�rteil.  Maxima kennt komplexe Eigenschaften
2788     der trigonometrischen Funktionen, um den Realteil und den
2789     Imagin�rteil zu bestimmen.
2790
2791          (%i1) rectform((2-%i)/(1-%i));
2792                                       %i   3
2793          (%o1)                        -- + -
2794                                       2    2
2795          (%i2) rectform(sin(x+%i*y));
2796          (%o2)          %i cos(x) sinh(y) + sin(x) cosh(y)
2797
2798     Bei der Zerlegung in einen Realteil und einen Imagin�rteil nutzt
2799     Maxima die Spiegelsymmetrie der Gammfunktion 'gamma'.  Die
2800     Eigenschaft der Spiegelsymmetrie wird mit der Funktion 'properties'
2801     angezeigt, der Eintrag lautet 'mirror symmetry'.
2802
2803          (%i3) properties(gamma);
2804          (%o3)    [mirror symmetry, noun, rule, gradef, transfun]
2805
2806          (%i4) rectform(gamma(x+%i*y));
2807                gamma(%i y + x) + gamma(x - %i y)
2808          (%o4) ---------------------------------
2809                                2
2810                                          gamma(x - %i y) - gamma(%i y + x)
2811                                        - ---------------------------------
2812                                                          2
2813
2814     Maxima kennt komplexe Eigenschaften der Besselfunktionen.  Die
2815     Besselfunktion 'bessel_j' ist f�r eine ganzzahlige Ordnung und
2816     einem imagin�ren Argument rein imagin�r.
2817
2818          (%i5) rectform(bessel_j(1,%i));
2819          (%o5)                  %i bessel_j(1, %i)
2820
2821
2822File: maxima.info,  Node: Funktionen der Kombinatorik,  Next: Wurzel- Exponential- und Logarithmusfunktion,  Prev: Funktionen f�r komplexe Zahlen,  Up: Mathematische Funktionen
2823
282410.3 Funktionen der Kombinatorik
2825================================
2826
2827 -- Operator: !!
2828
2829     Ist der Operator der doppelten Fakult�t.
2830
2831     F�r eine positive ganze Zahl 'n', wird 'n!!' zu dem Produkt 'n
2832     (n-2) (n-4) (n-6) ... (n - 2 (k-1))' vereinfacht, wobei 'k' gleich
2833     'floor(n/2)' ist und 'floor' die gr��te ganze Zahl als Ergebnis
2834     hat, die kleiner oder gleich 'n/2' ist.
2835
2836     F�r ein Argument 'n', das keine ganze positive Zahl ist, gibt 'n!!'
2837     die Substantivform 'genfact(n, n/2,2)' zur�ck.  Siehe die Funktion
2838     'genfact'.
2839
2840     Die Verallgemeinerung der doppelten Fakult�t f�r reelle und
2841     komplexe Zahlen ist als die Funktion 'double_factorial'
2842     implementiert.
2843
2844     Beispiele:
2845
2846          (%i1) [0!!, 1!!, 2!!, 3!!, 4!!, 5!!, 6!!, 7!!, 8!!];
2847          (%o1)           [1, 1, 2, 3, 8, 15, 48, 105, 384]
2848          (%i2) 1.5!!;
2849          (%o2)                  genfact(1.5, 0, 2)
2850          (%i3) x!!;
2851                                             x
2852          (%o3)                   genfact(x, -, 2)
2853                                             2
2854
2855 -- Funktion: binomial (<x>, <y>)
2856
2857     Ist der Binominialkoeffizient, der definiert ist als
2858                                            x!
2859                       binomial(x, y) = -----------
2860                                        (x - y)! y!
2861
2862     Die Funktion 'binomial' ist f�r das numerische und symbolische
2863     Rechnen geeignet.
2864
2865     Sind die Argumente <x> oder <y> ganze Zahlen, wird der
2866     Binominialkoeffizient zu einer ganzen Zahl vereinfacht.  Sind die
2867     Argumente <x> und <y> reelle oder komplexe Gleitkommazahlen, wird
2868     der Binominialkoeffizient mit der entsprechenden verallgemeinerten
2869     Fakult�t berechnet.  Siehe auch 'factorial' und 'gamma'.
2870
2871     Ist das Argument <y> oder die Differenz <x-y> eine ganz Zahl, wird
2872     der Binominialkoeffizient zu einem Polynom vereinfacht.
2873
2874     Mit den Funktionen 'makefact' oder 'makegamma' werden
2875     Binominialkoeffizienten in einem Ausdruck durch �quivalente
2876     Ausdr�cke mit der Fakult�t oder der Gammafunktion ersetzt.
2877
2878     Maxima kennt die Ableitung des Binominialkoeffizienten nach den
2879     Argumenten <x> und <y>.
2880
2881     Beispiele:
2882
2883          (%i1) binomial(11, 7);
2884          (%o1)                          330
2885          (%i2) binomial(%i, 1.5);
2886          (%o2)       .3693753994635863 %i - .7573400496142132
2887          (%i3) binomial(x, 3);
2888                                  (x - 2) (x - 1) x
2889          (%o3)                   -----------------
2890                                          6
2891          (%i4) binomial(x+3, 3);
2892                               (x + 1) (x + 2) (x + 3)
2893          (%o4)                -----------------------
2894                                          6
2895          (%i5) makefact(binomial(x,y));
2896                                         x!
2897          (%o5)                      -----------
2898                                     (x - y)! y!
2899
2900          (%i6) diff(binomial(x,y), y);
2901          (%o6)  - binomial(x, y) (psi (y + 1) - psi (- y + x + 1))
2902                                      0             0
2903
2904 -- Funktion: double_factorial (z)
2905
2906     Ist die doppelte Fakult�t, die allgemein definiert ist als
2907                         2  1/4 (1 - cos(z %pi))  z/2       z
2908                       (---)                     2    gamma(- + 1)
2909                        %pi                                 2
2910
2911     Die Funktion 'double_factorial' ist f�r das numerische und
2912     symbolische Rechnen geeignet.  Ist das Argument <z> eine ganze
2913     Zahl, eine Gleitkommazahl, eine gro�e Gleitkommazahl oder eine
2914     komplexe Gleitkommazahl, dann wird ein numerisches Ergebnis
2915     berechnet.  F�r eine positive ganze Zahl ist das Ergebnis gleich
2916     dem Ergebnis des Operators der doppelten Fakult�t '!!'.  F�r
2917     rationale Zahlen ist das Ergebnis eine Substantivform.
2918
2919     F�r negative gerade ganze Zahlen ist die Funktion
2920     'double_factorial' nicht definiert.
2921
2922     Hat die Optionsvariable 'factorial_expand' den Wert 'true',
2923     vereinfacht Maxima 'double_factorial' f�r das Argument 'n-1' und
2924     f�r Argumente 'n+2*k', wobei 'k' eine ganze Zahl ist.
2925
2926     Maxima kennt die Ableitung der Funktion 'double_factorial'.
2927
2928     'double_factorial' wird automatisch auf die Elemente von Listen und
2929     Matrizen sowie auf die beiden Seiten von Gleichungen angewendet.
2930     Siehe 'distribute_over'.
2931
2932     Beispiele:
2933
2934     Numerische Ergebnisse f�r ganze Zahlen, Gleitkommazahlen und
2935     komplexen Gleitkommazahlen.
2936
2937          (%i1) double_factorial([-3, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
2938          (%o1) [- 1, 1, 1, 1, 2, 3, 8, 15, 48, 105, 384, 945, 3840]
2939
2940          (%i2) double_factorial([1.5, 1.5b0, 0.5+%i, 0.5b0+%i]);
2941          (%o2) [1.380662681753386, 1.380662681753387b0,
2942          .4186422526242637 - .7218816624466643 %i,
2943          4.186422526242633b-1 - 7.218816624466641b-1 %i]
2944
2945     Vereinfachungen, wenn die Optionsvariable 'factorial_expand' den
2946     Wert 'true' hat.
2947
2948          (%i3) factorial_expand:true;
2949          (%o3)                         true
2950          (%i4) double_factorial(n-1);
2951                                         n!
2952          (%o4)                  -------------------
2953                                 double_factorial(n)
2954          (%i5) double_factorial(n+4);
2955          (%o5)          (n + 2) (n + 4) double_factorial(n)
2956          (%i6) double_factorial(n-4);
2957                                 double_factorial(n)
2958          (%o6)                  -------------------
2959                                      (n - 2) n
2960
2961     Die Ableitung der Funktion 'double_factorial'.
2962
2963          (%i7) diff(double_factorial(x), x);
2964                                               2
2965                                      %pi log(---) sin(%pi x)
2966                                              %pi                    x
2967          (%o7) (double_factorial(x) (----------------------- + psi (- + 1)
2968                                                 2                 0 2
2969                                                               + log(2)))/2
2970
2971 -- Funktion: factcomb (<expr>)
2972
2973     Fasst Faktoren mit Fakult�ten im Ausdruck <expr> zusammen.  Zum
2974     Beispiel wird '(n+1)*n!' zu '(n+1)!' zusammengefasst.
2975
2976     Hat die Optionsvariable 'sumsplitfact' den Wert 'false', wird nach
2977     der Vereinfachung mit 'factcomb' die Funktion 'minfactorial' auf
2978     den Ausdruck <expr> angewendet.
2979
2980     Beispiele:
2981
2982          (%i1) expr: ((n+1)*n!)/(n+2)!;
2983                                     (n + 1) n!
2984          (%o1)                      ----------
2985                                      (n + 2)!
2986          (%i2) factcomb(expr);
2987                                      (n + 1)!
2988          (%o2)                       --------
2989                                      (n + 2)!
2990          (%i3) factcomb(expr), sumsplitfact:false;
2991                                          1
2992          (%o3)                         -----
2993                                        n + 2
2994
2995 -- Funktion: factorial (<z>)
2996 -- Operator: !
2997
2998     Die Funktion 'factorial' ist f�r das numerische und symbolische
2999     Rechnen der Fakult�t geeignet.  Der Operator der Fakult�t '!', ist
3000     identisch mit der Funktion 'factorial'.
3001
3002     F�r eine ganze Zahl 'n', vereinfacht 'n!' zum Produkt der ganzen
3003     Zahlen von 1 bis einschlie�lich 'n'.  '0!' vereinfacht zu 1.  F�r
3004     reelle und komplexe Gleitkommazahlen wird 'z!' mit der
3005     Verallgemeinerung 'gamma(z+1)' berechnet.  Siehe die Funktion
3006     'gamma'.  F�r eine halbzahlige rationale Zahl 'n/2', vereinfacht
3007     '(n/2)!' zu einem rationalen Faktor multipliziert mit 'sqrt(%pi)'.
3008
3009     Die Optionsvariable 'factlim' enth�lt die gr��te Zahl, f�r die die
3010     Fakult�t einer ganzen Zahl numerisch berechnet wird.  Ist das
3011     Argument der Fakult�t eine rationale Zahl, wird von Maxima die
3012     Funktion 'gamma' f�r die numerische Berechnung aufgerufen.  In
3013     diesem Fall ist 'gammalim - 1' der gr��te Nenner, f�r den die
3014     Fakult�t vereinfacht wird.  Siehe 'gammalim'.
3015
3016     Hat die Optionsvariable 'factorial_expand' den Wert 'true', wird
3017     die Fakult�t von Argumenten der Form '(n+k)!' oder '(n-k)!'
3018     vereinfacht, wobei 'k' eine ganze Zahl ist.
3019
3020     Mit den Funktionen 'minfactorial' und 'factcomb' k�nnen Fakult�ten
3021     in Ausdr�cken vereinfacht werden.
3022
3023     Die Funktion 'makegamma' ersetzt Fakult�ten in einem Ausdruck durch
3024     die Gammafunktion 'gamma'.  Umgekehrt ersetzt die Funktion
3025     'makefact' Binomialkoeffizienten und die Gammafunktion in einem
3026     Ausdruck durch Fakult�ten.
3027
3028     Maxima kennt die Ableitung der Fakult�t und die Grenzwerte der
3029     Fakult�t f�r spezielle Werte wie negative ganze Zahlen.
3030
3031     Siehe auch die Gammfunktion 'gamma' und den Binomialkoeffizienten
3032     'binomial'.
3033
3034     Beispiele:
3035
3036     Die Fakult�t einer ganzen Zahl wird zu einer exakten Zahl
3037     vereinfacht, wenn das Argument nicht gr��er als 'factlim' ist.  Die
3038     Fakult�t f�r reelle und komplexe Zahlen wird als Gleitkommazahl
3039     berechnet.
3040
3041          (%i1) factlim:10;
3042          (%o1)                          10
3043          (%i2) [0!, (7/2)!, 8!, 20!];
3044                               105 sqrt(%pi)
3045          (%o2)            [1, -------------, 40320, 20!]
3046                                    16
3047          (%i3) [4.77!, (1.0+%i)!];
3048          (%o3) [81.44668037931197, .3430658398165451 %i
3049                                                       + .6529654964201663]
3050          (%i4) [2.86b0!, (1.0b0+%i)!];
3051          (%o4) [5.046635586910012b0, 3.430658398165454b-1 %i
3052                                                    + 6.529654964201667b-1]
3053
3054     Die Fakult�t von numerischen Konstanten oder eines konstanten
3055     Ausdrucks wird numerisch berechnet, wenn die Konstante oder der
3056     Ausdruck zu einer Zahl ausgewertet werden kann.
3057
3058          (%i1) [(%i + 1)!, %pi!, %e!, (cos(1) + sin(1))!];
3059          (%o1)      [(%i + 1)!, %pi!, %e!, (sin(1) + cos(1))!]
3060          (%i2) ev (%, numer, %enumer);
3061          (%o2) [.3430658398165451 %i + .6529654964201663,
3062                   7.188082728976031, 4.260820476357003, 1.227580202486819]
3063
3064     Fakult�ten werden vereinfacht und nicht ausgewertet.  Daher wird
3065     die Fakult�t auch dann berechnet, wenn die Auswertung mit dem
3066     Quote-Operator ''' unterdr�ckt ist.
3067
3068          (%i1) '([0!, (7/2)!, 4.77!, 8!, 20!]);
3069                      105 sqrt(%pi)
3070          (%o1)   [1, -------------, 81.44668037931197, 40320, 20!]
3071                           16
3072
3073     Maxima kennt die Ableitung der Fakult�t.
3074
3075          (%i1) diff(x!, x);
3076          (%o1)                    x! psi (x + 1)
3077                                         0
3078
3079     Die Optionsvariable 'factorial_expand' kontrolliert die Expansion
3080     und Vereinfachung von Ausdr�cken, die die Fakult�t enthalten.
3081
3082          (%i1) (n+1)!/n!,factorial_expand:true;
3083          (%o1)                         n + 1
3084
3085 -- Optionsvariable: factlim
3086     Standardwert: 100000
3087
3088     Die Optionsvariable 'factlim' spezifiziert die gr��te ganze Zahl,
3089     f�r die die Fakult�t einer ganzen Zahl numerisch berechnet wird.
3090     Hat 'factlim' den Wert -1, wird die Fakult�t f�r jede ganze Zahl
3091     berechnet.  Siehe die Funktion 'factorial'.
3092
3093 -- Optionsvariable: factorial_expand
3094     Standardwert: 'false'
3095
3096     Die Optionsvariable 'factorial_expand' kontrolliert die
3097     Vereinfachung von Ausdr�cken wie '(n+k)!' oder '(n-k)!', wobei 'k'
3098     eine ganze Zahl ist.  Siehe 'factorial' f�r ein Beispiel.
3099
3100     Siehe auch die Funktionen 'minfactorial' und 'factcomb' f�r die
3101     Vereinfachung von Ausdr�cken mit der Fakult�t.
3102
3103 -- Funktion: genfact (<x>, <y>, <z>)
3104
3105     Gibt die verallgemeinerte Fakult�t zur�ck, die als 'x (x-z) (x - 2
3106     z) ... (x - (y - 1) z)' definiert ist.  Ist <x> eine ganze Zahl,
3107     dann entspricht 'genfact(x, x, 1)' der Fakult�t 'x!' und
3108     'genfact(x, x/2, 2)' der doppelten Fakult�t 'x!!'.  Siehe auch die
3109     Funktionen 'factorial' und 'double_factorial' sowie die Operatoren
3110     '!' und '!!'.
3111
3112 -- Funktion: minfactorial (<expr>)
3113
3114     Die Funktion 'minfactorial' vereinfacht Fakult�ten 'factorial' in
3115     dem Ausdruck <epxr>, die sich um eine ganze Zahl voneinander
3116     unterscheiden.  Siehe auch die Funktion 'factcomb', um Fakult�ten
3117     zusammenzufassen, sowie die Optionsvariable 'factorial_expand'.
3118
3119          (%i1) n!/(n+2)!;
3120                                         n!
3121          (%o1)                       --------
3122                                      (n + 2)!
3123          (%i2) minfactorial (%);
3124                                          1
3125          (%o2)                    ---------------
3126                                   (n + 1) (n + 2)
3127
3128 -- Optionsvariable: sumsplitfact
3129     Standardwert: 'true'
3130
3131     Hat die Optionsvariable 'sumsplitfact' den Wert 'false', wird von
3132     der Funktion 'factcomb' nach der Zusammenfassung von Fakult�ten die
3133     Funktion 'minfactorial' angewendet.  Siehe die Funktion 'factcomb'
3134     f�r ein Beispiel.
3135
3136
3137File: maxima.info,  Node: Wurzel- Exponential- und Logarithmusfunktion,  Next: Winkelfunktionen,  Prev: Funktionen der Kombinatorik,  Up: Mathematische Funktionen
3138
313910.4 Wurzel-, Exponential- und Logarithmusfunktion
3140==================================================
3141
3142 -- Optionsvariable: %e_to_numlog
3143     Standardwert: 'false'
3144
3145     Hat die Optionsvariable '%e_to_numlog' den Wert 'true', wird ein
3146     Ausdruck mit der Exponentialfunktion 'exp' der Form '%e^(r*log(x))'
3147     zu 'x^r' vereinfacht, wenn 'r' eine rationale Zahl ist.  Ist 'r'
3148     eine ganze Zahl, wird die Vereinfachung von der Optionsvariablen
3149     'logsimp' kontrolliert.
3150
3151     Beispiel:
3152
3153          (%i1) exp(1/2*log(x));
3154                                        log(x)
3155                                        ------
3156                                          2
3157          (%o1)                       %e
3158          (%i2) exp(1/2*log(x)), %e_to_numlog:true;
3159          (%o2)                        sqrt(x)
3160
3161 -- Optionsvariable: %emode
3162     Standardwert: 'true'
3163
3164     Die Optionsvariable '%emode' kontrolliert die Vereinfachung von
3165     Ausdr�cken mit der Exponentialfunktion 'exp' der Form '%e^(%pi %i
3166     x)'.
3167
3168     Ist das Argument <x> eine ganze Zahl oder eine rationale Zahl, die
3169     ein Vielfaches von 1/2, 1/3, 1/4 oder 1/6 ist, dann wird der
3170     Ausdruck '%e^(%pi %i x)' zu einer reellen oder komplexen Zahl
3171     vereinfacht.  F�r Gleitkommazahlen wird diese Vereinfachung dann
3172     ausgef�hrt, wenn diese eine ganze Zahl oder halbzahlige rationale
3173     Zahl repr�sentieren.
3174
3175     Eine Summe im Exponenten wie zum Beispiel '%e^(%pi *%i (x+n))',
3176     wobei <n> eine der oben genannten Zahlen und <x> ein allgemeiner
3177     Ausdruck ist, wird vereinfacht, indem der Faktor '%^(%pi %i n)'
3178     entsprechend vereinfacht wird.
3179
3180     Hat '%emode' den Wert 'false', werden keine speziellen
3181     Vereinfachungen f�r den Ausdruck '%e^(%pi %i x)' vorgenommen.
3182
3183     Beispiele:
3184
3185          (%i1) exp([2*%pi*%i, 1/2*%pi*%i, 0.5*%pi*%i, 0.5b0*%pi*%i]);
3186          (%o1)               [1, %i, 1.0 %i, 1.0b0 %i]
3187
3188          (%i2) exp([1/3*%pi*%i, 1/4*%pi*%i, 1/6*%pi*%i]);
3189                   sqrt(3) %i   1    %i         1     %i   sqrt(3)
3190          (%o2)   [---------- + -, ------- + -------, -- + -------]
3191                       2        2  sqrt(2)   sqrt(2)  2       2
3192
3193          (%i3) exp((1/3+x)*%pi*%i);
3194                              sqrt(3) %i   1    %i %pi x
3195          (%o3)              (---------- + -) %e
3196                                  2        2
3197
3198 -- Optionsvariable: %enumer
3199     Standardwert: 'false'
3200
3201     Hat '%enumer' den Wert 'true', wird die Konstante '%e' immer dann
3202     durch ihren nummerischen Wert ersetzt, wenn die Optionsvariable
3203     'numer' den Wert 'true' hat.
3204
3205     Hat '%enumer' den Wert 'false', wird die Konstante '%e' nur dann
3206     durch ihren nummerischen Wert ersetzt, wenn der Exponent von '%e^x'
3207     zu einer Gleitkommazahl ausgewertet wird.
3208
3209     Siehe auch 'ev' und 'numer'.
3210
3211     Beispiel:
3212
3213          (%i1) %enumer:true;
3214          (%o1)                         true
3215          (%i2) exp(x);
3216                                           x
3217          (%o2)                          %e
3218          (%i3) exp(x),numer;
3219                                                  x
3220          (%o3)                  2.718281828459045
3221
3222 -- Funktion: exp (<z>)
3223
3224     Ist die Exponentialfunktion.  Die Exponentialfunktion 'exp' wird
3225     von Maxima sofort zu '%e^<z>' vereinfacht und tritt in
3226     vereinfachten Ausdr�cken nicht auf.  Maxima vereinfacht die
3227     Exponentialfunktion daher wie die allgemeine Exponentiation '^'.
3228     Dar�berhinaus kennt Maxima spezielle Regeln f�r die Vereinfachung
3229     der Exponentialfunktion.
3230
3231     Ist das Argument <z> der Exponentialfunktion eine ganze oder
3232     rationale Zahl wird ein vereinfachter Ausdruck zur�ckgegeben.  Ist
3233     das Argument <z> eine reelle oder komplexe Gleitkommazahl wird ein
3234     numerisches Ergebnis berechnet.
3235
3236     Folgende Optionsvariablen kontrollieren die Vereinfachung der
3237     Exponentialfunktion:
3238
3239     '%enumer'
3240          Hat die Optionsvariable '%enumer' den Wert 'true', vereinfacht
3241          Maxima die Eulersche Zahl '%e' immer dann zu ihrem numerischen
3242          Wert, wenn die Optionsvariable 'numer' auch den Wert 'true'
3243          hat.
3244
3245     '%emode'
3246          Hat die Optionsvariable '%emode' den Wert 'true', wendet
3247          Maxima Regeln an, um Ausdr�cke der Form '%e^(x*%i*%pi)' zu
3248          vereinfachen.  Der Standardwert von '%emode' ist 'true'.  Wenn
3249          mit komplexen Zahlen in der Polarform gerechnet wird, kann es
3250          hilfreich sein, die Optionsvariable '%emode' auf den Wert
3251          'false' zu setzen.
3252
3253     '%e_to_numlog'
3254          Hat die Optionsvariable '%e_to_numlog' den Wert 'true',
3255          vereinfacht Maxima einen Ausdruck '%e^(r*log(x)' zu 'x^r',
3256          wobei <r> eine rationale Zahl ist.  Ist <r> eine ganze Zahl
3257          wird diese Vereinfachung von der Optionsvariablen 'logsimp'
3258          kontrolliert.  F�r reelle oder komplexe Gleitkommazahlen wird
3259          diese Vereinfachung nicht ausgef�hrt.
3260
3261     'radexpand'
3262          Die Optionsvariable 'radexpand' kontrolliert die Vereinfachung
3263          von Ausdr�cken der Form '(%e^a)^b'.  Ist <a> ein reelles
3264          Argument vereinfacht Maxima immer zu einem Ausdruck
3265          '%e^(a*b)'.  Ist <a> ein komplexes Argument, wird die
3266          Vereinfachung '%e^(a*b)' dann ausgef�hrt, wenn die
3267          Optionsvariable 'radexpand' den Wert 'all' hat.
3268
3269     'logsimp'
3270          Die Optionsvariable 'logsimp' kontrolliert die Vereinfachung
3271          der Exponentialfunktion f�r den Fall, dass im Argument <expr>
3272          die Logarithmusfunktion 'log' auftritt.  Hat die 'logsimp' den
3273          Wert 'true', wird ein Ausdruck '%e^(n*log(x)' zu 'x^n'
3274          vereinfacht, wenn <n> eine ganze Zahl ist.  Mit der
3275          Optionsvariablen '%e_to_numlog' wird diese Vereinfachung f�r
3276          eine rationale Zahl <n> kontrolliert.
3277
3278     'demoivre'
3279          Ist eine Optionsvariable und eine Funktion, die auch als
3280          Auswertungsschalter 'evflag' definiert ist.  Hat die
3281          Optionsvariable 'demoivre' den Wert 'true', wird ein Ausdruck
3282          '%e^(x + %i y)' zu '%e^x (cos(y) + %i sin(y))' vereinfacht.
3283          Siehe auch die Optionsvariable 'exponentialize'.
3284
3285     Maxima kennt viele spezielle unbestimmte und bestimmte Integrale
3286     mit der Exponentialfunktion.
3287
3288 -- Funktion: log (<z>)
3289
3290     Ist der nat�rliche Logarithmus zur Basis e.  Die
3291     Logarithmusfunktion ist f�r das numerische und symbolische Rechnen
3292     geeignet.
3293
3294     Maxima hat keine vordefinierte Logarithmusfunktion zur Basis 10
3295     oder anderen Basen.  Eine einfache Definition ist zum Beispiel
3296     'log10(x) := log(x)/log(10)'.  Mit dem Kommando 'load(log10)' kann
3297     ein Paket geladen werden, dass eine dekadische Logarithmusfunktion
3298     'log10' definiert.
3299
3300     Ist das Argument <z> der Logarithmusfunktion eine ganze oder
3301     rationale Zahl wird ein vereinfachter Ausdruck zur�ckgegeben.  Ist
3302     das Argument <z> eine reelle oder komplexe Gleitkommazahl wird ein
3303     numerisches Ergebnis berechnet.
3304
3305     Die folgenden Optionsvariablen kontrollieren die Vereinfachung und
3306     Auswertung der Logarithmusfunktion:
3307
3308     'logexpand'
3309          Hat die Optionsvariable 'logexpand' den Wert 'true', dann wird
3310          'log(a^b)' zu 'b*log(a)' vereinfacht.  Hat 'logexpand' den
3311          Wert 'all', wird zus�tzlich 'log(a*b)' zu 'log(a)+log(b)'
3312          vereinfacht.  Mit den Wert 'super' vereinfacht Maxima
3313          weiterhin 'log(a/b)' zu 'log(a)-log(b)', wobei 'a/b' eine
3314          rationale Zahl ist.  'log(1/b' wird f�r eine ganze Zahl 'b'
3315          immer vereinfacht.  Hat die Optionsvariable 'logexpand' den
3316          Wert 'false' werden alle obigen Vereinfachungen ausgeschaltet.
3317
3318     'logsimp'
3319          Hat die Optionsvariable 'logsimp' den Wert 'false', werden
3320          Exponentialfunktionen 'exp', die Logarithmusfunktionen im
3321          Exponenten enthalten, nicht vereinfacht.
3322
3323     'lognegint'
3324          Hat die Optionsvariable 'lognegint' den Wert 'true', wird
3325          'log(-n)' zu 'log(n)+%i*%pi' f�r positive 'n' vereinfacht.
3326
3327     '%e_to_numlog'
3328          Hat die Optionsvariable '%e_to_numlog' den Wert 'true', wird
3329          ein Ausdruck '%e^(r*log(x))' zu 'x^r' vereinfacht.  Dabei sind
3330          'r' eine rationale Zahl und 'x' ein beliebiger Ausdruck.  Die
3331          Funktion 'radcan' f�hrt diese Vereinfachung ebenfalls aus.
3332
3333     Die Logarithmusfunktion wird automatisch auf die Elemente von
3334     Listen und Matrizen sowie auf die beiden Seiten von Gleichungen
3335     angewendet.  Siehe 'distribute_over'.
3336
3337     Beispiele:
3338
3339     Verschiedene Beispiele mit der Logarithmusfunktion.
3340
3341          (%i1) log(%e);
3342          (%o1)                           1
3343          (%i2) log(100.0);
3344          (%o2)                   4.605170185988092
3345          (%i3) log(2.5+%i);
3346          (%o3)       .3805063771123649 %i + .9905007344332917
3347          (%i4) taylor(log(1+x),x,0,5);
3348                                 2    3    4    5
3349                                x    x    x    x
3350          (%o4)/T/          x - -- + -- - -- + -- + . . .
3351                                2    3    4    5
3352          (%i5) rectform(log(x+%i*y));
3353                                 2    2
3354                            log(y  + x )
3355          (%o5)             ------------ + %i atan2(y, x)
3356                                 2
3357          (%i6) limit(log(x),x,0,plus);
3358          (%o6)                         minf
3359          (%i7) integrate(log(z)^n,z);
3360                                                              - n - 1
3361          (%o7) - gamma_incomplete(n + 1, - log(z)) (- log(z))
3362                                                                      n + 1
3363                                                                log(z)
3364          (%i8) laplace(log(t),t,s);
3365                                  - log(s) - %gamma
3366          (%o8)                   -----------------
3367                                          s
3368          (%i9) depends(y,x);
3369          (%o9)                        [y(x)]
3370          (%i10) ode2(diff(y,x)+log(y)+1,y,x);
3371                      - 1
3372          (%o10)    %e    expintegral_e(1, - log(y) - 1) = x + %c
3373
3374 -- Optionsvariable: logabs
3375     Standardwert: 'false'
3376
3377     Treten bei der unbestimmten Integration Logarithmusfunktionen im
3378     Ergebnis auf, so wird der Betrag der Argumente der
3379     Logarithmusfunktionen gebildet, wenn die Optionsvariable 'logabs'
3380     den Wert 'true' hat.
3381
3382     Beispiele:
3383
3384          (%i1) logabs:true;
3385          (%o1)                         true
3386          (%i2) integrate(1/x,x);
3387          (%o2)                      log(abs(x))
3388          (%i3) integrate(1/(1+x^3),x);
3389                                                             2 x - 1
3390                      ! 2        !                      atan(-------)
3391                  log(!x  - x + 1!)   log(abs(x + 1))        sqrt(3)
3392          (%o3) - ----------------- + --------------- + -------------
3393                          6                  3             sqrt(3)
3394
3395 -- Funktion: logarc (<expr>)
3396 -- Optionsvariable: logarc
3397
3398     Hat die Optionsvariable 'logarc' den Wert 'true', werden inverse
3399     Winkel- und Hyperbelfunktionen durch Logarithmusfunktionen ersetzt.
3400     Der Standardwert von 'logarc' ist 'false'.
3401
3402     Die Funktion 'logarc(<expr>)' f�hrt diese Ersetzung aus, ohne dass
3403     die Optionsvariable 'logarc' gesetzt wird.
3404
3405     Beispiele:
3406
3407          (%i1) logarc(asin(x));
3408                                               2
3409          (%o1)             - %i log(sqrt(1 - x ) + %i x)
3410          (%i2) logarc:true;
3411          (%o2)                         true
3412          (%i3) asin(x);
3413                                               2
3414          (%o3)             - %i log(sqrt(1 - x ) + %i x)
3415
3416 -- Optionsvariable: logconcoeffp
3417     Standardwert: 'false'
3418
3419     Der Optionsvariablen 'logconcoeffp' kann eine Aussagefunktion mit
3420     einem Argument zugewiesen werden, die kontrolliert, welche
3421     Koeffizienten von der Funktion 'logcontract' zusammengezogen
3422     werden.  Sollen zum Beispiel Wurzeln generiert werden, kann
3423     folgende Aussagefunktion definiert werden:
3424
3425          logconcoeffp:'logconfun$
3426          logconfun(m) := featurep(m,integer) or ratnump(m)$
3427
3428     Das Kommando 'logcontract(1/2*log(x))' liefert nun das Ergebnis
3429     'log(sqrt(x))'.
3430
3431 -- Funktion: logcontract (<expr>)
3432
3433     Der Ausdruck <expr> wird rekursiv nach Ausdr�cken der Form
3434     'a1*log(b1) + a2*log(b2) + c' durchsucht.  Diese werden zu
3435     'log(ratsimp(b1^a1 * b2^a2)) + c' transformiert.
3436
3437          (%i1) 2*(a*log(x) + 2*a*log(y))$
3438          (%i2) logcontract(%);
3439                                           2  4
3440          (%o2)                     a log(x  y )
3441
3442     Wird die Variable <n> mit dem Kommando 'declare(n, integer)' als
3443     eine ganze Zahl deklariert, dann wird 'logcontract(2*a*n*log(x))'
3444     zu 'a*log(x^(2*n))' vereinfacht.  Die Koeffizienten, die
3445     zusammengezogen werden, sind in diesem Fall die Zahl 2 und die
3446     Variable <n>, welche die folgende Aussage erf�llen 'featurep(coeff,
3447     integer)'.  Der Nutzer kann kontrollieren, welche Koeffizienten
3448     zusammengezogen werden.  Dazu wird der Optionsvariablen
3449     'logconcoeffp' eine Aussagefunktion mit einem Argument zugewiesen.
3450     Sollen zum Beispiel Wurzeln generiert werden, kann folgende
3451     Definition verwendet: 'logconcoeffp: 'logconfun$ logconfun(m) :=
3452     featurep(m,integer) or ratnump(m)$'.  Dann hat das Kommando
3453     'logcontract(1/2*log(x))' das Ergebnis 'log(sqrt(x))'.
3454
3455 -- Optionsvariable: logexpand
3456     Standardwert: 'true'
3457
3458     Die Optionsvariable 'logexpand' kontrolliert die Vereinfachung der
3459     Logarithmusfunktion 'log'.
3460
3461     Hat 'logexpand' den Wert 'true', wird 'log(a^b)' zu 'b*log(a)'
3462     vereinfacht.  Hat 'logexpand' den Wert 'all', wird zus�tzlich
3463     'log(a*b)' zu 'log(a)+log(b)' vereinfacht.  Mit dem Wert 'super'
3464     vereinfacht Maxima weiterhin 'log(a/b)' zu 'log(a)-log(b)', wobei
3465     'a/b' eine rationale Zahl ist.  'log(1/b' wird f�r eine ganze Zahl
3466     'b' immer vereinfacht.  Hat die Optionsvariable 'logexpand' den
3467     Wert 'false' werden alle obigen Vereinfachungen ausgeschaltet.
3468
3469 -- Optionsvariable: lognegint
3470     Standardwert: 'false'
3471
3472     Hat die Optionsvariable 'lognegint' den Wert 'true', wird 'log(-n)'
3473     zu 'log(n)+%i*%pi' f�r positive 'n' vereinfacht.
3474
3475 -- Optionsvariable: logsimp
3476     Standardwert: 'true'
3477
3478     Hat die Optionsvariable 'logsimp' den Wert 'false', werden
3479     Exponentialfunktionen 'exp', die Logarithmusfunktionen im
3480     Exponenten enthalten, nicht vereinfacht.
3481
3482 -- Funktion: plog (<x>)
3483
3484     Gibt den Hauptwert des komplexen nat�rlichen Logarithmus im
3485     Intervall '-%pi' < 'carg(<x>)' <= '+%pi' zur�ck.
3486
3487 -- Optionsvariable: rootsconmode
3488     Standardwert: 'true'
3489
3490     'rootsconmode' kontrolliert das Verhalten der Funktion
3491     'rootscontract'.  Siehe die Funktion 'rootscontract' f�r Details.
3492
3493 -- Funktion: rootscontract (<expr>)
3494
3495     Konvertiert Produkte von Wurzeln in Wurzeln von Produkten.  Zum
3496     Beispiel hat 'rootscontract(sqrt(x)*y^(3/2))' das Ergebnis
3497     'sqrt(x*y^3)'.
3498
3499     Hat die Optionsvariable 'radexpand' den Wert 'true' und die
3500     Optionsvariable 'domain' den Wert 'real', das sind die
3501     Standardwerte, wird 'abs(x)' zu 'sqrt(x^2)' vereinfacht.  Zum
3502     Beispiel hat 'rootscontract(abs(x) * sqrt(y))' das Ergebnis
3503     'sqrt(x^2*y)'.
3504
3505     Die Optionsvariable 'rootsconmode' kontrolliert das Ergebnis
3506     folgenderma�en:
3507
3508          Problem             Wert             Ergebnis
3509                              rootsconmode     rootscontract
3510
3511          x^(1/2)*y^(3/2)     false            sqrt(x*y^3)
3512          x^(1/2)*y^(1/4)     false            sqrt(x)*y^(1/4)
3513          x^(1/2)*y^(1/4)     true             sqrt(x*sqrt(y))
3514          x^(1/2)*y^(1/3)     true             sqrt(x)*y^(1/3)
3515          x^(1/2)*y^(1/4)     all              (x^2*y)^(1/4)
3516          x^(1/2)*y^(1/3)     all              (x^3*y^2)^(1/6)
3517
3518     Hat 'rootsconmode' den Wert 'false', kontrahiert 'rootscontract'
3519     nur Faktoren mit rationalen Exponenten, die den gleichen Nenner
3520     haben.  Hat 'rootsconmode' den Wert 'all', wird das kleinste
3521     gemeinsame Vielfache des Nenners der Faktoren verwendet, um die
3522     Faktoren zusammenzufassen.
3523
3524     �hnlich wie bei der Funktion 'logcontract' werden von
3525     'rootscontract' die Argumente unter der Wurzel mit der Funktion
3526     'ratsimp' vereinfacht.
3527
3528     Beispiele:
3529
3530          (%i1) rootsconmode: false$
3531          (%i2) rootscontract (x^(1/2)*y^(3/2));
3532                                             3
3533          (%o2)                      sqrt(x y )
3534          (%i3) rootscontract (x^(1/2)*y^(1/4));
3535                                             1/4
3536          (%o3)                     sqrt(x) y
3537          (%i4) rootsconmode: true$
3538          (%i5) rootscontract (x^(1/2)*y^(1/4));
3539          (%o5)                    sqrt(x sqrt(y))
3540          (%i6) rootscontract (x^(1/2)*y^(1/3));
3541                                             1/3
3542          (%o6)                     sqrt(x) y
3543          (%i7) rootsconmode: all$
3544          (%i8) rootscontract (x^(1/2)*y^(1/4));
3545                                        2   1/4
3546          (%o8)                       (x  y)
3547          (%i9) rootscontract (x^(1/2)*y^(1/3));
3548                                       3  2 1/6
3549          (%o9)                      (x  y )
3550          (%i10) rootsconmode: false$
3551          (%i11) rootscontract (sqrt(sqrt(x) + sqrt(1 + x))
3552                              *sqrt(sqrt(1 + x) - sqrt(x)));
3553          (%o11)                          1
3554          (%i12) rootsconmode: true$
3555          (%i13) rootscontract (sqrt(5+sqrt(5)) - 5^(1/4)*sqrt(1+sqrt(5)));
3556          (%o13)                          0
3557
3558 -- Funktion: sqrt (<z>)
3559
3560     Ist die Wurzelfunktion.  Die Wurzelfunktion wird von Maxima sofort
3561     zu '<x>^(1/2)' vereinfacht und tritt in Ausdr�cken nicht auf.
3562
3563     Die Wurzelfunktion ist f�r das numerische und symbolische Rechnen
3564     geeignet.  Ist das Argument <z> der Wurzelfunktion eine
3565     Gleitkommazahl, wird ein numerisches Ergebnis zur�ckgegeben.  F�r
3566     ganze und rationale Zahlen wird die Wurzelfunktion vereinfacht.
3567     Die numerische Berechnung kann mit den Optionsvariablen und
3568     Auswertungsschaltern 'numer' und 'float' kontrolliert werden.
3569
3570     Hat die Optionsvariable 'radexpand' den Wert 'true', werden die
3571     n-ten Wurzeln von Faktoren unter einer Wurzel aus der Wurzel
3572     herausgezogen.  So wird zum Beispiel 'sqrt(16*x^2)' nur dann zu
3573     '4*x' vereinfacht, wenn 'radexpand' den Wert 'true' hat.
3574
3575     Siehe auch die Funktionen 'rootscontract' und 'sqrtdenest' f�r die
3576     Vereinfachung von Ausdr�cken, die die Wurzelfunktion enthalten.
3577
3578     Beispiele:
3579
3580     Verschiedene Beispiele mit der Wurzelfunktion.
3581
3582          (%i1) sqrt(4);
3583          (%o1)                           2
3584          (%i2) sqrt(24);
3585          (%o2)                       2 sqrt(6)
3586          (%i3) sqrt(2.0);
3587          (%o3)                   1.414213562373095
3588          (%i4) taylor(sqrt(1+x),x,0,5);
3589                                 2    3      4      5
3590                            x   x    x    5 x    7 x
3591          (%o4)/T/      1 + - - -- + -- - ---- + ---- + . . .
3592                            2   8    16   128    256
3593          (%i5) rectform(sqrt(x+%i*y));
3594                     2    2 1/4     atan2(y, x)
3595          (%o5) %i (y  + x )    sin(-----------)
3596                                         2
3597                                                2    2 1/4     atan2(y, x)
3598                                            + (y  + x )    cos(-----------)
3599                                                                    2
3600          (%i6) integrate(sqrt(t)*(t+1)^-2,t,0,1);
3601                                       %pi - 2
3602          (%o6)                        -------
3603                                          4
3604
3605
3606File: maxima.info,  Node: Winkelfunktionen,  Next: Hyperbelfunktionen,  Prev: Wurzel- Exponential- und Logarithmusfunktion,  Up: Mathematische Funktionen
3607
360810.5 Winkelfunktionen
3609=====================
3610
3611* Menu:
3612
3613* Einf�hrung in Winkelfunktionen::
3614* Funktionen und Variablen f�r Winkelfunktionen::
3615
3616
3617File: maxima.info,  Node: Einf�hrung in Winkelfunktionen,  Next: Funktionen und Variablen f�r Winkelfunktionen,  Prev: Winkelfunktionen,  Up: Winkelfunktionen
3618
361910.5.1 Einf�hrung in Winkelfunktionen
3620-------------------------------------
3621
3622Maxima kennt viele Winkel- und Hyperbelfunktionen.  Nicht alle
3623Identit�ten f�r Winkel- und Hyperbelfunktionen sind programmiert, aber
3624es ist m�glich weitere Identit�ten mit der F�higkeit der Erkennung von
3625Mustern hinzuzuf�gen.
3626
3627Maxima kennt die folgenden Winkel- und Hyperbelfunktionen sowie deren
3628Inverse:
3629
3630     sin       cos       tan
3631     sec       csc       cot
3632     asin      acos      atan
3633     asec      acsc      acot
3634     sinh      cosh      tanh
3635     sech      csch      coth
3636     asinh     acosh     atanh
3637     asech     acsch     acoth
3638
3639
3640File: maxima.info,  Node: Funktionen und Variablen f�r Winkelfunktionen,  Prev: Einf�hrung in Winkelfunktionen,  Up: Winkelfunktionen
3641
364210.5.2 Funktionen und Variablen f�r Winkelfunktionen
3643----------------------------------------------------
3644
3645 -- Funktion: asin (<z>)
3646 -- Funktion: acos (<z>)
3647 -- Funktion: atan (<z>)
3648 -- Funktion: acot (<z>)
3649 -- Funktion: acsc (<z>)
3650 -- Funktion: asec (<z>)
3651
3652     Die inversen Winkelfunktionen: Arkussinus, Arkuskosinus,
3653     Arkustangens, Arkuskotangens, Arkuskosekans und Arkussekans.
3654
3655     Die inversen Winkelfunktionen sind f�r das numerische und
3656     symbolische Rechnen geeignet.  Die inversen Winkelfunktionen k�nnen
3657     f�r reelle und komplexe Gleitkommazahlen in doppelter und in
3658     beliebiger Genauigkeit berechnet werden.  Ist das Argument eine
3659     ganze oder rationale Zahl, werden die inversen Winkelfunktionen
3660     nicht numerisch berechnet, sondern vereinfacht.  Die numerische
3661     Berechnung kann mit den Optionsvariablen und Auswertungsschaltern
3662     'numer' und 'float' erzwungen werden.
3663
3664     Die inversen Winkelfunktionen sind bis auf die Funktionen 'acos'
3665     und 'asec' als ungerade definiert.  Die Funktionen 'acos' und
3666     'asec' vereinfachen f�r ein negatives Argument '-x' zu
3667     '%pi-acos(x)' und '%pi-asec(x)'.  F�r die inversen Winkelfunktion
3668     'asin', 'acos' und 'atan' ist die Spiegelsymmetrie f�r den Fall
3669     implementiert, dass das komplexe Argument 'x+%i*y' einen Realteil
3670     'abs(x)<1' hat.
3671
3672     Ist das Argument <z> eine Matrix, eine Liste oder eine Gleichung
3673     werden die inversen Winkelfunktionen auf die Elemente der Matrix,
3674     der Liste oder auf die beiden Seiten der Gleichung angewendet.
3675     Dieses Verhalten wird von der Optionsvariablen 'distribute_over'
3676     kontrolliert.
3677
3678     Inverse Winkelfunktionen k�nnen f�r das symbolische Rechnen
3679     verwendet werden.  Maxima kann Ausdr�cke mit inversen
3680     Winkelfunktionen differenzieren und integrieren, Grenzwerte
3681     bestimmen sowie Gleichungen mit inversen Winkelfunktionen l�sen.
3682
3683     Das Argument der inversen Winkelfunktionen kann eine Taylorreihe
3684     sein.  In diesem Fall wird die Taylorreihenentwicklung f�r die
3685     inverse Winkelfunktion vollst�ndig ausgef�hrt.
3686
3687     Die folgenden Optionsvariablen kontrollieren die Vereinfachung der
3688     inversen Winkelfunktionen:
3689
3690     'distribute_over'
3691          Hat die Optionsvariable 'distribute_over' den Wert 'true' und
3692          ist das Argument der inversen Winkelfunktion eine Matrix,
3693          Liste oder Gleichung wird die Funktion auf die Elemente oder
3694          beiden Seiten der Gleichung angewendet.  Der Standardwert ist
3695          'true'.
3696
3697     '%piargs'
3698          Hat die Optionsvariable '%piargs' den Wert 'true', werden die
3699          inversen Winkelfunktionen f�r spezielle Werte als Argument
3700          vereinfacht.  Der Standardwert ist 'true'.
3701
3702     '%iargs'
3703          Hat die Optionsvariable '%iargs' den Wert 'true' und ist das
3704          Argument der inversen Winkelfunktion ein Vielfaches der
3705          imagin�ren Einheit '%i' werden die inversen Winkelfunktionen
3706          zu inversen Hyperbelfunktionen vereinfacht.  Der Standardwert
3707          ist 'true'.
3708
3709     'triginverses'
3710          Hat die Optionsvariable 'triginverses' den Wert 'all' und ist
3711          das Argument die entsprechende Winkelfunktion vereinfachen die
3712          inversen Winkelfunktionen, zum Beispiel vereinfacht
3713          'asin(sin(x))' zu 'x'.  Der Standardwert ist 'true' und die
3714          Vereinfachung wird nicht vorgenommen.
3715
3716     'logarc'
3717          Hat die Optionsvariable 'logarc' den Wert 'true', werden
3718          inverse Winkelfunktionen durch Logarithmusfunktionen ersetzt.
3719          Der Standardwert von 'logarc' ist 'false'.
3720
3721 -- Funktion: atan2 (<y>, <x>)
3722
3723     Ist der Arkustangens mit zwei Argumenten, der in Maxima wie folgt
3724     definiert ist:
3725
3726          atan(y/x)           x>0
3727          atan(y/x) + %pi     x<0 und y>=0
3728          atan(y/x) - %pi     x<0 und y<0
3729            %pi / 2           x=0 und y>0
3730          - %pi / 2           x=0 und y<0
3731          nicht definiert     x=0 und y=0
3732
3733     Mit der obigen Definition ist der Wertebereich des Arkustangens
3734     '-%pi < atan2(y,x) <= %pi'.  Alternativ kann der Arkustangens mit
3735     zwei Argumenten definiert werden als
3736
3737                                   %i y + x
3738          atan2(y, x) = - %i log(-------------)
3739                                       2    2
3740                                 sqrt(y  + x )
3741
3742     Der Arkustangens ist f�r das symbolische und numerische Rechnen
3743     geeignet.  F�r reelle Argumente <x> und <y> deren Vorzeichen
3744     bestimmt werden kann, vereinfacht Maxima den Arkustangens wie oben
3745     in der Definition angegeben.  Sind beide Argumente Gleitkommazahlen
3746     wird ein numerisches Ergebnis berechnet.  Die numerische Berechnung
3747     f�r komplexe Gleitkommazahlen ist nicht implementiert.  Weiterhin
3748     kennt Maxima die speziellen Werte, wenn eines der Argumente <x>
3749     oder <y> unendlich ist.  'atan2(x, x)' und 'atan2(x, -x)' werden
3750     von Maxima vereinfacht, wenn Maxima das Vorzeichen von <x>
3751     ermitteln kann.
3752
3753     Die Vereinfachung des Arkustangens wird weiterhin von den folgenden
3754     Optionsvariablen kontrolliert:
3755
3756     'distribute_over'
3757          Hat die Optionsvariable 'distribute_over' den Wert 'true' und
3758          ist das Argument des Arkustangens eine Matrix, Liste oder
3759          Gleichung wird die Funktion auf die Elemente oder beiden
3760          Seiten der Gleichung angewendet.  Der Standardwert ist 'true'.
3761
3762     'trigsign'
3763          Hat die Optionsvariable 'trigsign' den Wert 'true',
3764          vereinfacht Maxima 'atan2(-y, x)' zu '- atan2(y, x)'.  Der
3765          Standardwert ist 'true'.
3766
3767     'logarc'
3768          Hat die Optionsvariable 'logarc' den Wert 'true', wird der
3769          Arkustangens durch einen Ausdruck mit der
3770          Logarithmusfunktionen ersetzt.  Der Standardwert von 'logarc'
3771          ist 'false'.
3772
3773     Maxima kann Ausdr�cke mit dem Arkustangens ableiten und integrieren
3774     sowie die Grenzwerte von Ausdr�cken mit dem Arkustangens ermitteln.
3775
3776     Beispiele:
3777
3778          (%i1) atan2([-1, 1],[-1, 0, 1]);
3779                        3 %pi    %pi    %pi    3 %pi  %pi  %pi
3780          (%o1)     [[- -----, - ---, - ---], [-----, ---, ---]]
3781                          4       2      4       4     2    4
3782          (%i2) atan2(1,[-0.5, 0.5]);
3783          (%o2)         [2.034443935795703, 1.10714871779409]
3784          (%i3) assume(a>0)$
3785
3786          (%i4) atan2(2*a, -2*a);
3787                                        3 %pi
3788          (%o4)                         -----
3789                                          4
3790          (%i5) diff(atan2(y,x), x);
3791                                           y
3792          (%o5)                       - -------
3793                                         2    2
3794                                        y  + x
3795          (%i6) integrate(atan2(y,x), x);
3796                                    2    2
3797                             y log(y  + x )          y
3798          (%o6)              -------------- + x atan(-)
3799                                   2                 x
3800
3801 -- Funktion: sin (<z>)
3802 -- Funktion: cos (<z>)
3803 -- Funktion: tan (<z>)
3804 -- Funktion: cot (<z>)
3805 -- Funktion: csc (<z>)
3806 -- Funktion: sec (<z>)
3807
3808     Die Winkelfunktionen: Sinus, Kosinus, Tangens, Kotangens, Kosekans
3809     und Sekans.
3810
3811     Die Winkelfunktionen sind f�r das numerische und symbolische
3812     Rechnen geeignet.  Die Winkelfunktionen k�nnen f�r reelle und
3813     komplexe Gleitkommazahlen in doppelter und in beliebiger
3814     Genauigkeit berechnet werden.  Ist das Argument eine ganze oder
3815     rationale Zahl, werden die Winkelfunktionen nicht numerisch
3816     berechnet, sondern vereinfacht.  Die numerische Berechnung kann mit
3817     den Optionsvariablen und Auswertungsschaltern 'numer' und 'float'
3818     erzwungen werden.
3819
3820     Die Winkelfunktionen sind gerade oder ungerade und haben
3821     Spiegelsymmetrie.  Maxima wendet diese Symmetrieeigenschaften
3822     automatisch bei der Vereinfachung von Ausdr�cken mit
3823     Winkelfunktionen an.
3824
3825     Ist das Argument <z> eine Matrix, eine Liste oder eine Gleichung
3826     werden die Winkelfunktionen auf die Elemente der Matrix, der Liste
3827     oder auf die beiden Seiten der Gleichung angewendet.  Dieses
3828     Verhalten wird von der Optionsvariablen 'distribute_over'
3829     kontrolliert.
3830
3831     Winkelfunktionen k�nnen f�r das symbolische Rechnen verwendet
3832     werden.  Maxima kann Ausdr�cke mit Winkelfunktionen differenzieren
3833     und integrieren, Grenzwerte bestimmen sowie Gleichungen und
3834     Differentialgleichungen mit Winkelfunktionen l�sen.
3835
3836     Das Argument der Winkelfunktionen kann eine Taylorreihe sein.  In
3837     diesem Fall wird die Taylorreihenentwicklung f�r die Winkelfunktion
3838     vollst�ndig ausgef�hrt.
3839
3840     Die folgenden Optionsvariablen kontrollieren die Vereinfachung der
3841     Winkelfunktionen:
3842
3843     'distribute_over'
3844          Hat die Optionsvariable 'distribute_over' den Wert 'true' und
3845          ist das Argument der Winkelfunktion eine Matrix, Liste oder
3846          Gleichung wird die Funktion auf die Elemente oder beiden
3847          Seiten der Gleichung angewendet.  Der Standardwert ist 'true'.
3848
3849     '%piargs'
3850          Hat die Optionsvariable '%piargs' den Wert 'true', werden die
3851          Winkelfunktionen f�r ganzzahlige und halbzahlige Vielfache der
3852          Konstanten '%pi' zu speziellen Werten vereinfacht.  Der
3853          Standardwert ist 'true'.
3854
3855     '%iargs'
3856          Hat die Optionsvariable '%iargs' den Wert 'true' und ist das
3857          Argument der Winkelfunktion ein Vielfaches der imagin�ren
3858          Einheit '%i' werden die Winkelfunktionen zu Hyperbelfunktionen
3859          vereinfacht.  Der Standardwert ist 'true'.
3860
3861     'trigsign'
3862          Hat die Optionsvariable 'trigsign' den Wert 'true', werden die
3863          gerade oder ungerade Symmetrie der Winkelfunktionen bei der
3864          Vereinfachung angewendet.  Der Standardwert ist 'true'.
3865
3866     'triginverses'
3867          Hat die Optionsvariable 'triginverses' den Wert 'true' und ist
3868          das Argument eine inverse Winkelfunktion vereinfachen die
3869          Winkelfunktionen zu einem einfachen algebraischen Ausdruck,
3870          zum Beispiel vereinfacht 'sin(acos(x))' zu 'sqrt(1-x^2)'.  Der
3871          Standardwert ist 'true'.
3872
3873     'trigexpand'
3874          Hat die Optionsvariable 'trigexpand' den Wert 'true', dann
3875          werden die Winkelfunktionen f�r ein Argument expandiert, das
3876          eine Summe oder ein Produkt mit einer ganzen Zahl ist.  Der
3877          Standardwert ist 'false'.
3878
3879     'exponentialize'
3880          Hat die Optionsvariable 'exponentialize' den Wert 'true', dann
3881          werden die Winkelfunktionen in eine Exponentialform
3882          transformiert.  Der Standardwert ist 'false'.
3883
3884     'halfangles'
3885          Hat die Optionsvariable 'halfangles' den Wert 'true', dann
3886          werden die Winkelfunktionen f�r halbzahlige Argumente zu einem
3887          �quivalenten Ausdruck transformiert.  Der Standardwert ist
3888          'false'.
3889
3890     Beispiele:
3891
3892     Im Folgenden werden Beispiele f�r die Sinusfunktion gezeigt.
3893     Numerische Berechnungen f�r Gleitkommazahlen:
3894
3895          (%i1) sin(1+%i);
3896          (%o1)                      sin(%i + 1)
3897          (%i2) sin(1.0+%i);
3898          (%o2)       .6349639147847361 %i + 1.298457581415977
3899          (%i3) sin(1.0b0+%i);
3900          (%o3)     6.349639147847361b-1 %i + 1.298457581415977b0
3901          (%i4) sin(1.0b0),fpprec:45;
3902          (%o4)   8.41470984807896506652502321630298999622563061b-1
3903
3904     Einige Vereinfachungen der Sinusfunktionen:
3905
3906          (%i5) sin(%i*(x+y));
3907          (%o5)                    %i sinh(y + x)
3908          (%i6) sin(%pi/3);
3909                                       sqrt(3)
3910          (%o6)                        -------
3911                                          2
3912          (%i2) sin(x+y),trigexpand:true;
3913          (%o2)             cos(x) sin(y) + sin(x) cos(y)
3914          (%i3) sin(2*x+y),trigexpand:true;
3915                     2         2
3916          (%o3)  (cos (x) - sin (x)) sin(y) + 2 cos(x) sin(x) cos(y)
3917
3918     Grenzwerte, Ableitungen und Integrale mit der Sinusfunktion:
3919
3920          (%i4) limit(sin(x)/x,x,0);
3921          (%o4)                          1
3922          (%i5) diff(sin(sqrt(x))/x,x);
3923                            cos(sqrt(x))   sin(sqrt(x))
3924          (%o5)             ------------ - ------------
3925                                  3/2            2
3926                               2 x              x
3927          (%i6) integrate(sin(x^3),x);
3928          (%o6)
3929                                   1      3                     1        3
3930                  gamma_incomplete(-, %i x ) + gamma_incomplete(-, - %i x )
3931                                   3                            3
3932                - ---------------------------------------------------------
3933                                             12
3934
3935     Reihenentwicklung der Sinusfunktion:
3936
3937          (%i7) taylor(sin(x),x,0,3);
3938                                        3
3939                                       x
3940          (%o7)/T/                 x - -- + . . .
3941                                       6
3942
3943 -- Optionsvariable: %piargs
3944     Standardwert: 'true'
3945
3946     Hat '%piargs' den Wert 'true', werden Winkel- und
3947     Hyperbelfunktionen sowie deren Inverse zu algebraischen Konstanten
3948     vereinfacht, wenn das Argument ein ganzzahliges Vielfaches der
3949     folgenden Konstanten ist: '%pi', '%pi/2', '%pi/3', '%pi/4' oder
3950     '%pi/6'.
3951
3952     Maxima kennt weiterhin einige Identit�ten, wenn die Konstante '%pi'
3953     mit einer Variablen multipliziert wird, die als ganzzahlig
3954     deklariert wurde.
3955
3956     Beispiele:
3957
3958          (%i1) %piargs : false$
3959          (%i2) [sin (%pi), sin (%pi/2), sin (%pi/3)];
3960                                          %pi       %pi
3961          (%o2)            [sin(%pi), sin(---), sin(---)]
3962                                           2         3
3963          (%i3) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
3964                                %pi       %pi       %pi
3965          (%o3)            [sin(---), sin(---), sin(---)]
3966                                 4         5         6
3967          (%i4) %piargs : true$
3968          (%i5) [sin (%pi), sin (%pi/2), sin (%pi/3)];
3969                                          sqrt(3)
3970          (%o5)                    [0, 1, -------]
3971                                             2
3972          (%i6) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
3973                                   1         %pi   1
3974          (%o6)                [-------, sin(---), -]
3975                                sqrt(2)       5    2
3976          (%i7) [cos (%pi/3), cos (10*%pi/3), tan (10*%pi/3),
3977                 cos (sqrt(2)*%pi/3)];
3978                          1    1               sqrt(2) %pi
3979          (%o7)          [-, - -, sqrt(3), cos(-----------)]
3980                          2    2                    3
3981
3982     Weitere Identit�ten werden angewendet, wenn '%pi' und '%pi/2' mit
3983     einer ganzzahligen Variable multipliziert werden.
3984
3985          (%i1) declare (n, integer, m, even)$
3986          (%i2) [sin (%pi * n), cos (%pi * m), sin (%pi/2 * m),
3987                 cos (%pi/2 * m)];
3988                                                m/2
3989          (%o2)                  [0, 1, 0, (- 1)   ]
3990
3991 -- Optionsvariable: %iargs
3992     Standardwert: 'true'
3993
3994     Hat '%iargs' den Wert 'true', werden Winkelfunktionen zu
3995     Hyperbelfunktionen vereinfacht, wenn das Argument ein Vielfaches
3996     der imagin�ren Einheit '%i' ist.
3997
3998     Die Vereinfachung zu Hyperbelfunktionen wird auch dann ausgef�hrt,
3999     wenn das Argument offensichtlich reell ist.
4000
4001     Beispiele:
4002
4003          (%i1) %iargs : false$
4004          (%i2) [sin (%i * x), cos (%i * x), tan (%i * x)];
4005          (%o2)           [sin(%i x), cos(%i x), tan(%i x)]
4006          (%i3) %iargs : true$
4007          (%i4) [sin (%i * x), cos (%i * x), tan (%i * x)];
4008          (%o4)           [%i sinh(x), cosh(x), %i tanh(x)]
4009
4010     Auch wenn das Argument offensichtlich reell ist, wird zu einer
4011     Hyperbelfunktion vereinfacht.
4012
4013          (%i1) declare (x, imaginary)$
4014          (%i2) [featurep (x, imaginary), featurep (x, real)];
4015          (%o2)                     [true, false]
4016          (%i3) sin (%i * x);
4017          (%o3)                      %i sinh(x)
4018
4019 -- Optionsvariable: halfangles
4020     Standardwert: 'false'
4021
4022     Hat 'halfangles' den Wert 'true', werden Winkel- und
4023     Hyperbelfunktionen mit halbzahligen Argumenten '<expr>/2'
4024     vereinfacht.
4025
4026     F�r ein reelles Argument <x> im Intervall '0 < x < 2*%pi'
4027     vereinfacht der Sinus f�r ein halbzahliges Argument zu einer
4028     einfachen Formel:
4029
4030                                   sqrt(1 - cos(x))
4031                                   ----------------
4032                                       sqrt(2)
4033
4034     Ein komplizierter Faktor wird gebraucht, damit die Formel korrekt
4035     ist f�r ein komplexes Argument <z>:
4036
4037                realpart(z)
4038          floor(-----------)
4039                   2 %pi
4040     (- 1)                   (1 - unit_step(- imagpart(z))
4041
4042                                 realpart(z)            realpart(z)
4043                           floor(-----------) - ceiling(-----------)
4044                                    2 %pi                  2 %pi
4045                     ((- 1)                                          + 1))
4046
4047     Maxima kennt diesen Faktor und �hnliche Faktoren f�r die Sinus,
4048     Kosinus, Sinus Hyperbolicus und Kosinus Hyperbolicus Funktionen.
4049     F�r spezielle Argumente z dieser Funktionen vereinfachen diese
4050     Funktionen entsprechend.
4051
4052     Beispiele:
4053
4054          (%i1) halfangles:false;
4055          (%o1)                                false
4056          (%i2) sin(x/2);
4057                                                  x
4058          (%o2)                               sin(-)
4059                                                  2
4060          (%i3) halfangles:true;
4061          (%o3)                                true
4062          (%i4) sin(x/2);
4063                                                              x
4064                                                      floor(-----)
4065                                                            2 %pi
4066                                sqrt(1 - cos(x)) (- 1)
4067          (%o4)                 ----------------------------------
4068                                             sqrt(2)
4069          (%i5) assume(x>0, x<2*%pi)$
4070          (%i6) sin(x/2);
4071                                         sqrt(1 - cos(x))
4072          (%o6)                          ----------------
4073                                             sqrt(2)
4074
4075 -- Paket: ntrig
4076
4077     Das Paket 'ntrig' enth�lt Regeln, um Winkelfunktionen zu
4078     vereinfachen, die Argumente der Form '<f>(<n> %pi/10)' haben.  <f>
4079     ist eine der Funktionen 'sin', 'cos', 'tan', 'csc', 'sec' oder
4080     'cot'.
4081
4082     Das Kommando 'load(ntrig)' l�dt das Paket.  Die Vereinfachungen
4083     werden dann von Maxima automatisch ausgef�hrt.
4084
4085 -- Funktion: trigexpand (<expr>)
4086
4087     Die Funktion 'trigexpand' expandiert Winkel- und Hyperbelfunktionen
4088     im Ausdruck <expr>, die Summen und Vielfache von Winkeln als
4089     Argument haben.  Die besten Ergebnisse werden erzielt, wenn der
4090     Ausdruck <expr> zun�chst expandiert wird.
4091
4092     Folgende Schalter kontrollieren 'trigexpand':
4093
4094     'trigexpand'
4095          Wenn 'true', werden Sinus- und Kosinusfunktionen expandiert.
4096
4097     'halfangles'
4098          Wenn 'true', werden Vereinfachungen f�r halbzahlige Argumente
4099          angewendet.
4100
4101     'trigexpandplus'
4102          Wenn 'true', werden Winkelfunktionen, die eine Summe als
4103          Argument haben, wie zum Beispiel 'sin(x+y)', vereinfacht.
4104
4105     'trigexpandtimes'
4106          Wenn 'true', werden Winkelfunktionen, die ein Produkt als
4107          Argument haben, wie zum Beispiel 'sin(2 x)', vereinfacht.
4108
4109     Beispiele:
4110
4111          (%i1) x+sin(3*x)/sin(x),trigexpand=true,expand;
4112                                   2           2
4113          (%o1)               - sin (x) + 3 cos (x) + x
4114          (%i2) trigexpand(sin(10*x+y));
4115          (%o2)          cos(10 x) sin(y) + sin(10 x) cos(y)
4116
4117 -- Optionsvariable: trigexpandplus
4118     Standardwert: 'true'
4119
4120     'trigexpandplus' kontrolliert die Vereinfachung von
4121     Winkelfunktionen mit der Funktion 'trigexpand' f�r den Fall, dass
4122     Winkelfunktionen mit Summen als Argumente auftreten.  Hat
4123     'trigexpandplus' den Wert 'true', werden zum Beispiel
4124     Winkelfunktionen wie 'sin(x+y)' vereinfacht.
4125
4126 -- Optionsvariable: trigexpandtimes
4127     Standardwert: 'true'
4128
4129     'trigexpandtimes' kontrolliert die Vereinfachung von
4130     Winkelfunktionen mit der Funktion 'trigexpand' f�r den Fall, dass
4131     Winkelfunktionen mit Produkten als Argumente auftreten.  Hat
4132     'trigexpandtimes' den Wert 'true', werden zum Beispiel
4133     Winkelfunktionen wie 'sin(2 x)' vereinfacht.
4134
4135 -- Optionsvariable: triginverses
4136     Standardwert: 'true'
4137
4138     Kontrolliert die Vereinfachung, wenn das Argument einer
4139     Winkelfunktion oder Hyperbelfunktion eine der inversen Funktion
4140     ist.
4141
4142     Hat 'triginverses' den Wert 'all', vereinfachen beide Ausdr�cke
4143     'atan(tan(<x>))' und 'tan(atan(<x>))' zum Wert <x>.
4144
4145     Hat 'triginverses' den Wert 'all', wird '<arcfun>(<fun>(<x>))'
4146     nicht vereinfacht.
4147
4148     Hat 'triginverses' den Wert 'false', werden '<arcfun>(<fun>(<x>))'
4149     und '<fun>(<arcfun>(<x>))' nicht vereinfacht.
4150
4151 -- Funktion: trigreduce (<expr>, <x>)
4152 -- Funktion: trigreduce (<expr>)
4153
4154     Produkte und Potenzen von Winkelfunktionen und den
4155     Hyperbelfunktionen mit dem Argument <x> werden zu Funktionen
4156     vereinfacht, die Vielfache von <x> enthalten.  'trigreduce'
4157     versucht auch, Sinus- und Kosinusfunktionen in einem Nenner zu
4158     eliminieren.  Wird keine Variable <x> angegeben, werden alle
4159     Variablen im Ausdruck 'expr' betrachtet.
4160
4161     Siehe auch 'poissimp'.
4162
4163          (%i1) trigreduce(-sin(x)^2+3*cos(x)^2+x);
4164                         cos(2 x)      cos(2 x)   1        1
4165          (%o1)          -------- + 3 (-------- + -) + x - -
4166                            2             2       2        2
4167
4168 -- Optionsvariable: trigsign
4169     Standardwert: 'true'
4170
4171     Hat 'trigsign' den Wert 'true', werden Winkelfunktionen mit einem
4172     negativem Argument vereinfacht.  Zum Beispiel vereinfacht in diesem
4173     Fall 'sin(-x)' zu '-sin(x)'.
4174
4175 -- Funktion: trigsimp (<expr>)
4176
4177     Wendet die Identit�ten 'sin(x)^2 + cos(x)^2 = 1' und 'cosh(x)^2 -
4178     sinh(x)^2 = 1' an, um Ausdr�cke, die Funktionen wie 'tan', 'sec',
4179     usw.  enthalten, zu Ausdr�cken mit den Funktionen 'sin', 'cos',
4180     'sinh', 'cosh' zu vereinfachen.
4181
4182     Die Anwendung von Funktionen wie 'trigreduce', 'ratsimp' und
4183     'radcan' kann den Ausdruck weiter vereinfachen.
4184
4185     Das Kommando 'demo(trgsmp)' zeigt einige Beispiele.
4186
4187 -- Funktion: trigrat (<expr>)
4188
4189     Gives a canonical simplifyed quasilinear form of a trigonometrical
4190     expression; <expr> is a rational fraction of several 'sin', 'cos'
4191     or 'tan', the arguments of them are linear forms in some variables
4192     (or kernels) and '%pi/<n>' (<n> integer) with integer coefficients.
4193     The result is a simplified fraction with numerator and denominator
4194     linear in 'sin' and 'cos'.  Thus 'trigrat' linearize always when it
4195     is possible.
4196
4197          (%i1) trigrat(sin(3*a)/sin(a+%pi/3));
4198          (%o1)            sqrt(3) sin(2 a) + cos(2 a) - 1
4199
4200     The following example is taken from Davenport, Siret, and Tournier,
4201     Calcul Formel, Masson (or in English, Addison-Wesley), section
4202     1.5.5, Morley theorem.
4203
4204          (%i1) c : %pi/3 - a - b$
4205          (%i2) bc : sin(a)*sin(3*c)/sin(a+b);
4206                                                    %pi
4207                            sin(a) sin(3 (- b - a + ---))
4208                                                     3
4209          (%o2)             -----------------------------
4210                                     sin(b + a)
4211          (%i3) ba : bc, c=a, a=c;
4212                                                   %pi
4213                              sin(3 a) sin(b + a - ---)
4214                                                    3
4215          (%o3)               -------------------------
4216                                            %pi
4217                                    sin(a - ---)
4218                                             3
4219          (%i4) ac2 : ba^2 + bc^2 - 2*bc*ba*cos(b);
4220                   2         2         %pi
4221                sin (3 a) sin (b + a - ---)
4222                                        3
4223          (%o4) ---------------------------
4224                          2     %pi
4225                       sin (a - ---)
4226                                 3
4227                                                 %pi
4228           - (2 sin(a) sin(3 a) sin(3 (- b - a + ---)) cos(b)
4229                                                  3
4230                       %pi            %pi
4231           sin(b + a - ---))/(sin(a - ---) sin(b + a))
4232                        3              3
4233                2       2              %pi
4234             sin (a) sin (3 (- b - a + ---))
4235                                        3
4236           + -------------------------------
4237                          2
4238                       sin (b + a)
4239          (%i5) trigrat (ac2);
4240          (%o5) - (sqrt(3) sin(4 b + 4 a) - cos(4 b + 4 a)
4241           - 2 sqrt(3) sin(4 b + 2 a) + 2 cos(4 b + 2 a)
4242           - 2 sqrt(3) sin(2 b + 4 a) + 2 cos(2 b + 4 a)
4243           + 4 sqrt(3) sin(2 b + 2 a) - 8 cos(2 b + 2 a) - 4 cos(2 b - 2 a)
4244           + sqrt(3) sin(4 b) - cos(4 b) - 2 sqrt(3) sin(2 b) + 10 cos(2 b)
4245           + sqrt(3) sin(4 a) - cos(4 a) - 2 sqrt(3) sin(2 a) + 10 cos(2 a)
4246           - 9)/4
4247
4248
4249File: maxima.info,  Node: Hyperbelfunktionen,  Next: Zufallszahlen,  Prev: Winkelfunktionen,  Up: Mathematische Funktionen
4250
425110.6 Hyperbelfunktionen
4252=======================
4253
4254* Menu:
4255
4256* Einf�hrung in Hyperbelfunktionen::
4257* Funktionen und Variablen f�r Hyperbelfunktionen::
4258
4259
4260File: maxima.info,  Node: Einf�hrung in Hyperbelfunktionen,  Next: Funktionen und Variablen f�r Hyperbelfunktionen,  Prev: Hyperbelfunktionen,  Up: Hyperbelfunktionen
4261
426210.6.1 Einf�hrung in Hyperbelfunktionen
4263---------------------------------------
4264
4265
4266File: maxima.info,  Node: Funktionen und Variablen f�r Hyperbelfunktionen,  Prev: Einf�hrung in Hyperbelfunktionen,  Up: Hyperbelfunktionen
4267
426810.6.2 Funktionen und Variablen f�r Hyperbelfunktionen
4269------------------------------------------------------
4270
4271 -- Funktion: asinh (<x>)
4272 -- Funktion: acosh (<x>)
4273 -- Funktion: atanh (<x>)
4274 -- Funktion: acoth (<x>)
4275 -- Funktion: acsch (<x>)
4276 -- Funktion: asech (<x>)
4277
4278     Die inversen Hyperbelfunktionen: Areasinus Hyperbolicus,
4279     Areakosinus Hyperbolicus, Areatangens Hyperbolicus, Areakotangens
4280     Hyperbolicus, Areakosekans Hyperbolicus, Areasekans Hyperbolicus.
4281
4282 -- Funktion: sinh (<x>)
4283 -- Funktion: cosh (<x>)
4284 -- Funktion: tanh (<x>)
4285 -- Funktion: coth (<x>)
4286 -- Funktion: csch (<x>)
4287 -- Funktion: sech (<x>)
4288
4289     Die Hyperbelfunktionen: Sinus Hyperbolicus, Kosinus Hyperbolicus,
4290     Tangens Hyperbolicus, Kotangens Hyperbolicus, Kosekans
4291     Hyperbolicus, Sekans Hyperbolicus.
4292
4293
4294File: maxima.info,  Node: Zufallszahlen,  Prev: Hyperbelfunktionen,  Up: Mathematische Funktionen
4295
429610.7 Zufallszahlen
4297==================
4298
4299 -- Funktion: make_random_state (<n>)
4300 -- Funktion: make_random_state (<s>)
4301 -- Funktion: make_random_state (true)
4302 -- Funktion: make_random_state (false)
4303
4304     Ein Zufallszustand repr�sentiert den Zustand des
4305     Zufallszahlengenerators.  Der Zustand enth�lt 627 32-Bit Worte.
4306
4307     'make_random_state(<n>)' gibt einen neuen Zufallszustand zur�ck,
4308     der aus einer ganzen Zahl <n> modulo 2^32 erzeugt wird.  <n> kann
4309     eine negative Zahl sein.
4310
4311     'make_random_state(<s>)' gibt eine Kopie des Zufallszutandes <s>
4312     zur�ck.
4313
4314     'make_random_state(true)' gibt einen neuen Zufallszustand zur�ck,
4315     der aus der aktuellen Systemzeit des Computers erzeugt wird.
4316
4317     'make_random_state(false)' gibt eine Kopie des aktuellen Zustands
4318     des Zufallszahlengenerators zur�ck.
4319
4320 -- Funktion: set_random_state (<s>)
4321
4322     Kopiert <s> in den Zufallszustand des Zufallszahlengenerators.
4323
4324     'set_random_state' gibt immer 'done' zur�ck.
4325
4326 -- Funktion: random (<x>)
4327
4328     Erzeugt eine Pseudo-Zufallszahl.  Ist <x> eine ganze Zahl, gibt
4329     'random(<x>)' eine ganze Zahl im Intervall 0 bis einschlie�lich
4330     '<x>-1' zur�ck.  Ist <x> eine Gleitkommazahl, gibt 'random(<x>)'
4331     eine positive Gleitkommazahl zur�ck, die kleiner als <x> ist.
4332     'random' gibt eine Fehlermeldung, wenn <x> weder eine ganze Zahl
4333     noch eine Gleitkommazahl ist oder wenn <x> eine negative Zahl ist.
4334
4335     Die Funktionen 'make_random_state' und 'set_random_state' verwalten
4336     den Zustand des Zufallszahlengenerators.
4337
4338     Der Maxima-Zufallszahlengenerator ist eine Implementation des
4339     Mersenne twister MT 19937.
4340
4341     Beispiele:
4342
4343          (%i1) s1: make_random_state (654321)$
4344          (%i2) set_random_state (s1);
4345          (%o2)                         done
4346          (%i3) random (1000);
4347          (%o3)                          768
4348          (%i4) random (9573684);
4349          (%o4)                        7657880
4350          (%i5) random (2^75);
4351          (%o5)                11804491615036831636390
4352          (%i6) s2: make_random_state (false)$
4353          (%i7) random (1.0);
4354          (%o7)                   .2310127244107132
4355          (%i8) random (10.0);
4356          (%o8)                   4.394553645870825
4357          (%i9) random (100.0);
4358          (%o9)                   32.28666704056853
4359          (%i10) set_random_state (s2);
4360          (%o10)                        done
4361          (%i11) random (1.0);
4362          (%o11)                  .2310127244107132
4363          (%i12) random (10.0);
4364          (%o12)                  4.394553645870825
4365          (%i13) random (100.0);
4366          (%o13)                  32.28666704056853
4367
4368
4369File: maxima.info,  Node: Maximas Datenbank,  Next: Grafische Darstellung,  Prev: Mathematische Funktionen,  Up: Top
4370
437111 Maximas Datenbank
4372********************
4373
4374* Menu:
4375
4376* Einf�hrung in Maximas Datenbank::
4377* Funktionen und Variablen f�r Eigenschaften::
4378* Funktionen und Variablen f�r Fakten::
4379* Funktionen und Variablen f�r Aussagen::
4380
4381
4382File: maxima.info,  Node: Einf�hrung in Maximas Datenbank,  Next: Funktionen und Variablen f�r Eigenschaften,  Prev: Maximas Datenbank,  Up: Maximas Datenbank
4383
438411.1 Einf�hrung in Maximas Datenbank
4385====================================
4386
4387Eigenschaften
4388-------------
4389
4390Variablen und Funktionen k�nnen mit der Funktion 'declare' Eigenschaften
4391zugewiesen werden.  Diese Eigenschaften werden in eine Datenbank
4392abgelegt oder in eine von Lisp bereitgestellte Eigenschaftsliste
4393eingetragen.  Mit der Funktion 'featurep' kann gepr�ft werden, ob ein
4394Symbol eine bestimmte Eigenschaft hat und mit der Funktion 'properties'
4395k�nnen alle Eigenschaften eines Symbols angezeigt werden.  Die Funktion
4396'remove' l�scht Eigenschaften aus der Datenbank oder von der
4397Eigenschaftsliste.  Wird mit der Funktion 'kill' ein Symbol entfernt,
4398werden auch die zugewiesenen Eigenschaften gel�scht.
4399
4400Weiterhin k�nnen mit den Funktionen 'put' und 'qput' beliebige vom
4401Nutzer vorgesehene Eigenschaften in die Eigenschaftsliste zu einem
4402Symbol abgelegt werden.  Mit der Funktion 'get' werden die Eigenschaften
4403von der Eigenschaftsliste gelesen und mit der Funktion 'rem' gel�scht.
4404
4405Variablen k�nnen die folgenden Eigenschaften erhalten, die in die
4406Datenbank eingetragen werden.
4407
4408   constant
4409   integer        noninteger
4410   even           odd
4411   rational       irrational
4412   real           imaginary      complex
4413
4414Funktionen k�nnen die folgenden Eigenschaften erhalten, die in die
4415Datenbank eingetragen werden.
4416
4417   increasing     decreasing
4418   posfun         integervalued
4419
4420Die folgenden Eigenschaften k�nnen f�r Funktionen definiert werden und
4421wirken sich auf die Vereinfachung dieser Funktionen aus.  Diese
4422Eigenschaften werden in *note Vereinfachung:: beschrieben.
4423
4424   linear         additive       multiplicative
4425   outative       commutative    symmetric
4426   antisymmetric  nary           lassociativ
4427   rassociative   evenfun        oddfun
4428
4429Weitere Eigenschaften, die Variablen und Funktionen erhalten k�nnen, und
4430die in die Lisp-Eigenschaftsliste des Symbols abgelegt werden, sind.
4431
4432   bindtest       feature        alphabetic
4433   scalar         nonscalar      nonarray
4434
4435Kontexte
4436--------
4437
4438Maxima verwaltet Kontexte, um Eigenschaften von Variablen und Funktionen
4439sowie Fakten abzulegen.  Fakten werden mit der Funktion 'assume'
4440definiert und in dem aktuellen Kontext abgelegt.  Mit 'assume(a>10)'
4441erh�lt Maxima zum Beispiel die Information, dass die Variable 'a' gr��er
4442als '10' ist.  Mit der Funktion 'forget' werden Fakten aus der Datenbank
4443entfernt.  Fragt Maxima den Nutzer nach Eigenschaften von Variablen,
4444werden die Antworten in einem Kontext abgelegt.
4445
4446Ein Kontext hat einen Namen, mit dem auf diesen Bezug genommen werden
4447kann.  Nach dem Starten von Maxima hat der aktuelle Kontext den Namen
4448'initial'.  Es kann eine beliebige Anzahl weiterer Kontexte definiert
4449werden.  Diese k�nnen hierarchisch voneinander abh�ngen.  So ist der
4450Kontext 'initial' ein Unterkontext zum Kontext 'global'.  Die Fakten in
4451einem �bergeordneten Kontext sind in dem Unterkontext immer pr�sent.
4452Der Kontext 'global' enth�lt zum Beispiel Fakten, die von Maxima
4453initialisiert werden, und zus�tzlich zu den Fakten des Kontextes
4454'initial' aktiv sind.
4455
4456Kontexte k�nnen eine beliege Anzahl an Fakten aufnehmen.  Sie k�nnen mit
4457der Funktion 'deactivate' deaktiviert werden, ohne dass die Fakten
4458verloren gehen und sp�ter mit der Funktion 'activate' aktiviert werden,
4459wodurch die Fakten f�r Aussagefunktionen wieder zur Verf�gung stehen.
4460
4461
4462File: maxima.info,  Node: Funktionen und Variablen f�r Eigenschaften,  Next: Funktionen und Variablen f�r Fakten,  Prev: Einf�hrung in Maximas Datenbank,  Up: Maximas Datenbank
4463
446411.2 Funktionen und Variablen f�r Eigenschaften
4465===============================================
4466
4467 -- Eigenschaft: alphabetic
4468
4469     Das Kommando 'declare(string, alphabetic)' deklariert die Zeichen
4470     der Zeichenkette <string> als alphabetisch.  Das Argument <string>
4471     muss eine Zeichenkette sein.  Zeichen, die als alphabetisch
4472     deklariert sind, k�nnen in Maxima-Bezeichnern verwendet werden.
4473     Siehe auch *note Bezeichner::.
4474
4475     Beispiele:
4476
4477     Die Zeichen '"~"', '"@"' und '`' als alphabetisch erkl�rt.
4478
4479          (%i1) xx\~yy\`\@ : 1729;
4480          (%o1)                         1729
4481          (%i2) declare ("~`@", alphabetic);
4482          (%o2)                         done
4483          (%i3) xx~yy`@ + @yy`xx + `xx@@yy~;
4484          (%o3)               `xx@@yy~ + @yy`xx + 1729
4485          (%i4) listofvars (%);
4486          (%o4)                  [@yy`xx, `xx@@yy~]
4487
4488 -- Eigenschaft: bindtest
4489
4490     Hat ein Symbol <x> die Eigenschaft 'bindtest' und wird es
4491     ausgewertet, ohne das dem Symbol bisher ein Wert zugewiesen wurde,
4492     signalisiert Maxima einen Fehler.  Siehe auch die Funktion
4493     'declare'.
4494
4495     Beispiel:
4496
4497          (%i1) aa + bb;
4498          (%o1)                        bb + aa
4499          (%i2) declare (aa, bindtest);
4500          (%o2)                         done
4501          (%i3) aa + bb;
4502          aa unbound variable
4503           -- an error.  Quitting.  To debug this try debugmode(true);
4504          (%i4) aa : 1234;
4505          (%o4)                         1234
4506          (%i5) aa + bb;
4507          (%o5)                       bb + 1234
4508
4509 -- Eigenschaft: constant
4510
4511     Das Kommando 'declare(<a>, constant)' deklariert ein Symbol <a> als
4512     konstant.  Die Funktion 'constantp' hat f�r dieses Symbol dann das
4513     Ergebnis 'true'.  Die Deklaration als eine Konstante verhindert
4514     nicht, dass dem Symbol ein Wert zugewiesen werden kann.  Siehe
4515     'declare' und 'constantp'.
4516
4517     Beispiel:
4518
4519          (%i1) declare(c, constant);
4520          (%o1)                         done
4521          (%i2) constantp(c);
4522          (%o2)                         true
4523          (%i3) c : x;
4524          (%o3)                           x
4525          (%i4) constantp(c);
4526          (%o4)                         false
4527
4528 -- Funktion: constantp (<expr>)
4529
4530     Gibt f�r einen konstanten Ausdruck <expr> den Wert 'true' zur�ck,
4531     andernfalls 'false'.
4532
4533     Ein Ausdruck wird von Maxima als ein konstanter Ausdruck erkannt,
4534     wenn seine Argumente Zahlen sind (einschlie�lich von Zahlen in
4535     einer CRE-Darstellung), symbolische Konstanten wie '%pi', '%e' und
4536     '%i', Variablen, die einen konstanten Wert haben, Variablen, die
4537     mit 'declare' als konstant deklariert sind, oder Funktionen, deren
4538     Argumente konstant sind.
4539
4540     Die Funktion 'constantp' wertet das Argument aus.
4541
4542     Siehe auch die Eigenschaft 'constant'.
4543
4544     Beispiele:
4545
4546          (%i1) constantp (7 * sin(2));
4547          (%o1)                                true
4548          (%i2) constantp (rat (17/29));
4549          (%o2)                                true
4550          (%i3) constantp (%pi * sin(%e));
4551          (%o3)                                true
4552          (%i4) constantp (exp (x));
4553          (%o4)                                false
4554          (%i5) declare (x, constant);
4555          (%o5)                                done
4556          (%i6) constantp (exp (x));
4557          (%o6)                                true
4558          (%i7) constantp (foo (x) + bar (%e) + baz (2));
4559          (%o7)                                false
4560          (%i8)
4561
4562 -- Funktion: declare (<a_1>, <p_1>, <a_2>, <p_2>, ...)
4563
4564     Weist dem Symbol <a_i> die Eigenschaft <p_i> zu.  Die Argumente
4565     <a_i> und <p_i> k�nnen Listen sein.  Ist <a_i> eine Liste, dann
4566     erh�lt jedes Symbol der Liste die Eigenschaft <p_i>.  Ist umgekehrt
4567     <p_i> eine Liste mit Eigenschaften, dann erh�lt das Symbol <a_i>
4568     diese Eigenschaften.  Entsprechend erhalten alle Symbole einer
4569     Liste <a_i> die Eigenschaften einer Liste <p_i>.
4570
4571     Die Funktion 'declare' wertet die Argumente nicht aus.  'declare'
4572     gibt stets 'done' als Ergebnis zur�ck.
4573
4574     Hat ein Symbol <sym> die Eigenschaft <prop> mit der Funktion
4575     'declare' erhalten, dann hat das Kommando 'featurep(<sym>, <prop>)'
4576     das Ergebnis 'true'.  Mit der Funktion 'properties' k�nnen alle
4577     Eigenschaften eines Symbols angezeigt werden.
4578
4579     Mit der Funktion 'declare' k�nnen Symbole die folgenden
4580     Eigenschaften erhalten:
4581
4582     'additive'
4583          Hat eine Funktion 'f' die Eigenschaft 'additive', wird ein
4584          Ausdruck der Form 'f(x + y + z + ...)' zu 'f(x) + f(y) + f(z)
4585          + ...' vereinfacht.  Siehe 'additive'.
4586
4587     'alphabetic'
4588          <a_i> ist eine Zeichenkette, deren Zeichen als alphabetische
4589          Zeichen deklariert werden.  Die Zeichen k�nnen dann in
4590          Maxima-Bezeichnern verwendet werden.  Siehe 'alphabetic' f�r
4591          Beispiele.
4592
4593     'antisymmetric, commutative, symmetric'
4594          <a_i> wird als eine symmetrische, antisymmetrische oder
4595          kommutative Funktion interpretiert.  Die Eigenschaften
4596          'commutative' und 'symmetric' sind �quivalent.  Siehe
4597          'antisymmetric', 'commutative' und 'symmetric'.
4598
4599     'bindtest'
4600          Hat ein Symbol die Eigenschaft 'bindtest' und wird es
4601          ausgewertet, ohne das dem Symbol bisher ein Wert zugewiesen
4602          wurde, signalisiert Maxima einen Fehler.  Siehe 'bindtest' f�r
4603          Beispiele.
4604
4605     'constant'
4606          Hat ein Symbol die Eigenschaft 'constant', wird es von Maxima
4607          als eine Konstante interpretiert.  Siehe auch 'constant'.
4608
4609     'even, odd'
4610          Erh�lt eine Variable die Eigenschaft 'even' oder 'odd', wird
4611          sie als gerade oder ungerade interpretiert.
4612
4613     'evenfun, oddfun'
4614          Erh�lt eine Funktion oder ein Operator die Eigenschaft
4615          'evenfun' oder 'oddfun' wird die Funktion oder der Operator
4616          von Maxima als gerade und ungerade interpretiert.  Diese
4617          Eigenschaft wird bei der Vereinfachung von Ausdr�cken von
4618          Maxima angewendet.  Siehe 'evenfun' und 'oddfun'.
4619
4620     'evflag'
4621          Deklariert die Variable 'a_i' als einen Auswertungsschalter.
4622          W�hrend der Auswertung eines Ausdrucks mit der Funktion 'ev',
4623          erh�lt der Auswertungsschalter 'a_i' den Wert 'true'.  Siehe
4624          'evflag' f�r Beispiele.
4625
4626     'evfun'
4627          Deklariert eine Funktion <a_i> als eine Auswertungsfunktion.
4628          Tritt die Funktion <a_i> als Argument der Funktion 'ev' auf,
4629          so wird die Funktion auf den Ausdruck angewendet.  Siehe
4630          'evfun' f�r Beispiele.
4631
4632     'feature'
4633          <a_i> wird als eine Eigenschaft 'feature' interpretiert.
4634          Andere Symbole k�nnen dann diese vom Nutzer definierte
4635          Eigenschaft erhalten.  Siehe 'feature'.
4636
4637     'increasing, decreasing'
4638          Erh�lt eine Funktion die Eigenschaft 'decreasing' oder
4639          'increasing', wird die Funktion als eine monoton steigende
4640          oder fallende Funktion interpretiert.  Siehe 'decreasing' und
4641          'increasing'.
4642
4643     'integer, noninteger'
4644          <a_i> wird als eine ganzzahlige oder nicht-ganzzahlige
4645          Variable interpretiert.  Siehe 'integer' und 'noninteger'.
4646
4647     'integervalued'
4648          Erh�lt eine Funktion die Eigenschaft 'integervalued', nimmt
4649          Maxima f�r Vereinfachungen an, dass die Funktionen einen
4650          ganzzahligen Wertebereich hat.  F�r ein Beispiel siehe
4651          'integervalued'.
4652
4653     'lassociative, rassociative'
4654          <a_i> wird als eine rechts- oder links-assoziative Funktion
4655          interpretiert.  Siehe 'lassociative' und 'rassociative'.
4656
4657     'linear'
4658          Entspricht der Deklaration einer Funktion als 'outative' und
4659          'additive'.  Siehe auch 'linear'.
4660
4661     'mainvar'
4662          Wird eine Variable als <mainvar> deklariert, wird sie als eine
4663          "Hauptvariable" interpretiert.  Eine Hauptvariable wird vor
4664          allen Konstanten und Variablen in einer kanonischen Ordnung
4665          eines Maxima-Ausdr�ckes angeordnet.  Die Anordnung wird durch
4666          die Funktion 'ordergreatp' bestimmt.  Siehe auch 'mainvar'.
4667
4668     'multiplicative'
4669          Hat eine Funktion 'f' die Eigenschaft 'multiplicative', werden
4670          Ausdr�cke der Form '<a_i>(x * y * z * ...)' zu '<a_i>(x) *
4671          <a_i>(y) * <a_i>(z) * ...' vereinfacht.  Die Vereinfachung
4672          wird nur f�r das erste Argument der Funktion <f> ausgef�hrt.
4673          Siehe 'multiplicative'.
4674
4675     'nary'
4676          Erh�lt eine Funktion oder ein Operator die Eigenschaft 'nary',
4677          wird die Funktion oder der Operator bei der Vereinfachung als
4678          Nary-Funktion oder Nary-Operator interpretiert.
4679          Verschachtelte Ausdr�cke wie 'foo(x, foo(y, z))' werden zum
4680          Beispiel zu 'foo(x, y, z)' vereinfacht.  Die Deklaration
4681          'nary' unterscheidet sich von der Funktion 'nary'.  W�hrend
4682          der Funktionsaufruf einen neuen Operator definiert, wirkt sich
4683          die Deklaration nur auf die Vereinfachung aus.  Siehe auch
4684          'nary'.
4685
4686     'nonarray'
4687          Hat ein Symbol <a_i> die Eigenschaft 'nonarray', wird es nicht
4688          als ein Array interpretiert, wenn das Symbol einen Index
4689          erh�lt.  Diese Deklaration verhindert die mehrfache
4690          Auswertung, wenn <a_i> als indizierte Variable genutzt wird.
4691          Siehe 'nonarray'.
4692
4693     'nonscalar'
4694          <a_i> wird als eine nicht-skalare Variable interpretiert.  Ein
4695          Symbol wird also als ein Vektor oder eine Matrix deklariert.
4696          Siehe 'nonscalar'.
4697
4698     'noun'
4699          <a_i> wird als Substantivform interpretiert.  Abh�ngig vom
4700          Kontext wird <a_i> durch ''<a_i>' oder 'nounify(<a_i>)'
4701          ersetzt.  Siehe auch 'noun'.  f�r ein Beispiel.
4702
4703     'outative'
4704          Ausdr�cke mit der Funktion <a_i> werden so vereinfacht, dass
4705          konstante Faktoren aus dem Argument herausgezogen werden.  Hat
4706          die Funktion <a_i> ein Argument, wird ein Faktor dann als
4707          konstant angesehen, wenn er ein Symbol oder eine deklarierte
4708          Konstante ist.  Hat die Funktion <a_i> zwei oder mehr
4709          Argumente, wird ein Faktor dann als konstant angesehen, wenn
4710          das zweite Argument ein Symbol und der Faktor unabh�ngig vom
4711          zweiten Argument ist.  Siehe auch 'outative'.
4712
4713     'posfun'
4714          <a_i> wird als eine Funktion interpretiert, die nur positive
4715          Werte hat.  Siehe 'posfun'.
4716
4717     'rational, irrational'
4718          <a_i> wird als eine rationale oder irrationale Zahl
4719          interpretiert.  Siehe 'rational' und 'irrational'.
4720
4721     'real, imaginary, complex'
4722          <a_i> wird als eine reelle, imagin�re oder komplexe Zahl
4723          interpretiert.  Siehe 'real', 'imaginary' und 'complex'.
4724
4725     'scalar'
4726          <a_i> wird als skalare Variable interpretiert.  Siehe
4727          'scalar'.
4728
4729 -- Eigenschaft: decreasing
4730 -- Eigenschaft: increasing
4731
4732     Erh�lt eine Funktion mit der Funktion 'declare' die Eigenschaft
4733     'decreasing' oder 'increasing' wird die Funktion als eine steigende
4734     oder fallende Funktion interpretiert.
4735
4736     Beispiel:
4737
4738          (%i1) assume(a > b);
4739          (%o1)                        [a > b]
4740          (%i2) is(f(a) > f(b));
4741          (%o2)                        unknown
4742          (%i3) declare(f, increasing);
4743          (%o3)                         done
4744          (%i4) is(f(a) > f(b));
4745          (%o4)                         true
4746
4747 -- Eigenschaften: even
4748 -- Eigenschaften: odd
4749
4750     Hat eine Variable mit der Funktion 'declare' die Eigenschaft 'even'
4751     oder 'odd' erhalten, wird sie von Maxima als gerade oder ungerade
4752     ganze Zahl interpretiert.  Diese Eigenschaften werden jedoch nicht
4753     von den Funktionen 'evenp', 'oddp' oder 'integerp' erkannt.
4754
4755     Siehe auch die Funktion 'askinteger'.
4756
4757     Beispiele:
4758
4759          (%i1) declare(n, even);
4760          (%o1)                         done
4761          (%i2) askinteger(n, even);
4762          (%o2)                          yes
4763          (%i3) askinteger(n);
4764          (%o3)                          yes
4765          (%i4) evenp(n);
4766          (%o4)                         false
4767
4768 -- Eigenschaft: feature
4769
4770     'feature' ist eine Eigenschaft, die ein Symbol <sym> mit der
4771     Funktion 'declare' erhalten kann.  In diesem Fall ist das Symbol
4772     <sym> selbst eine Eigenschaft, so dass das Kommando 'declare(x,
4773     sym)' einem Symbol <x> die vom Nutzer definierte Eigenschaft 'sym'
4774     gibt.
4775
4776     Maxima unterscheidet Systemeigenschaften und mathematische
4777     Eigenschaften, die Symbole und Ausdr�cke haben k�nnen.  F�r
4778     Systemeigenschaften siehe die Funktion 'status'.  F�r mathematische
4779     Eigenschaften siehe die Funktionen 'declare' und 'featurep'.
4780
4781     Beispiel:
4782
4783          (%i1) declare (FOO, feature);
4784          (%o1)                         done
4785          (%i2) declare (x, FOO);
4786          (%o2)                         done
4787          (%i3) featurep (x, FOO);
4788          (%o3)                         true
4789
4790 -- Funktion: featurep (<a>, <p>)
4791
4792     Stellt fest, ob das Symbol oder der Ausdruck <a> die Eigenschaft
4793     <p> hat.  Maxima nutzt die Fakten der aktiven Kontexte und die
4794     definierten Eigenschaften f�r Symbole und Funktionen.
4795
4796     'featurep' gibt sowohl f�r den Fall 'false' zur�ck, dass das
4797     Argument <a> nicht die Eigenschaft <p> hat, als auch f�r den Fall,
4798     dass Maxima dies nicht anhand der bekannten Fakten und
4799     Eigenschaften entscheiden kann.
4800
4801     'featurep' wertet die Argumente aus.
4802
4803     Siehe auch 'declare' und 'featurep'..
4804
4805     Beispiele:
4806
4807          (%i1) declare (j, even)$
4808          (%i2) featurep (j, integer);
4809          (%o2)                           true
4810
4811 -- Systemvariable: features
4812
4813     Maxima kennt spezielle mathematische Eigenschaften von Funktionen
4814     und Variablen.
4815
4816     'declare(<x>)', <foo> gibt der Funktion oder Variablen <x> die
4817     Eigenschaft <foo>.
4818
4819     'declare(<foo>, feature)' deklariert die neue Eigenschaft <foo>.
4820     Zum Beispiel deklariert 'declare([red, green, blue], feature)' die
4821     drei neuen Eigenschaften 'red', 'green' und 'blue'.
4822
4823     'featurep(<x>, <foo>)' hat die R�ckgabe 'true', wenn <x> die
4824     Eigenschaft <foo> hat.  Ansonsten wird 'false' zur�ckgegeben.
4825
4826     Die Informationsliste 'features' enth�lt eine Liste der
4827     Eigenschaften, die Funktionen und Variablen erhalten k�nnen und die
4828     in die Datenbank eingetragen werden:
4829
4830        integer         noninteger       even
4831        odd             rational         irrational
4832        real            imaginary        complex
4833        analytic        increasing       decreasing
4834        oddfun          evenfun          posfun
4835        commutative     lassociative     rassociative
4836        symmetric       antisymmetric
4837
4838     Hinzu kommen die vom Nutzer definierten Eigenschaften.
4839
4840     'features' ist eine Liste der mathematischen Eigenschaften.  Es
4841     gibt weitere Eigenschaften.  Siehe 'declare' und 'status'.
4842
4843 -- Funktion: get (<a>, <i>)
4844
4845     Gibt die Eigenschaft <i> des Symbols <a> zur�ck.  Hat das Symbol
4846     <a> nicht die Eigenschaft <i>, wird 'false' zur�ckgegeben.
4847
4848     'get' wertet die Argumente aus.
4849
4850     Beispiele:
4851
4852          (%i1) put (%e, 'transcendental, 'type);
4853          (%o1)                    transcendental
4854          (%i2) put (%pi, 'transcendental, 'type)$
4855          (%i3) put (%i, 'algebraic, 'type)$
4856          (%i4) typeof (expr) := block ([q],
4857                  if numberp (expr)
4858                  then return ('algebraic),
4859                  if not atom (expr)
4860                  then return (maplist ('typeof, expr)),
4861                  q: get (expr, 'type),
4862                  if q=false
4863                  then errcatch (error(expr,"is not numeric.")) else q)$
4864          (%i5) typeof (2*%e + x*%pi);
4865          x is not numeric.
4866          (%o5)  [[transcendental, []], [algebraic, transcendental]]
4867          (%i6) typeof (2*%e + %pi);
4868          (%o6)     [transcendental, [algebraic, transcendental]]
4869
4870 -- Eigenschaften: integer
4871 -- Eigenschaften: noninteger
4872
4873     Hat eine Variable mit der Funktion 'declare' die Eigenschaft
4874     'integer' oder 'noninteger' erhalten, wird sie von Maxima als eine
4875     ganze Zahl oder als nicht-ganze Zahl interpretiert.  Siehe auch
4876     'askinteger'.
4877
4878     Beispiele:
4879
4880          (%i1) declare(n, integer, x, noninteger);
4881          (%o1)                         done
4882          (%i2) askinteger(n);
4883          (%o2)                          yes
4884          (%i3) askinteger(x);
4885          (%o3)                          no
4886
4887 -- Eigenschaft: integervalued
4888
4889     Erh�lt eine Funktion mit 'declare' die Eigenschaft 'integervalued',
4890     nimmt Maxima f�r Vereinfachungen an, dass der Wertebereich der
4891     Funktion ganzzahlig ist.
4892
4893     Beispiel:
4894
4895          (%i1) exp(%i)^f(x);
4896                                        %i f(x)
4897          (%o1)                      (%e  )
4898          (%i2) declare(f, integervalued);
4899          (%o2)                         done
4900          (%i3) exp(%i)^f(x);
4901                                        %i f(x)
4902          (%o3)                       %e
4903
4904 -- Eigenschaft: nonarray
4905
4906     'declare(a, nonarray)' gibt dem Symbol <a> die Eigenschaft nicht
4907     ein Array zu sein.  Dies verhindert die mehrfache Auswertung, wenn
4908     das Symbol <a> als indizierte Variable genutzt wird.
4909
4910     Beispiel:
4911
4912          (%i1) a:'b$ b:'c$ c:'d$
4913
4914          (%i4) a[x];
4915          (%o4)                          d
4916                                          x
4917          (%i5) declare(a, nonarray);
4918          (%o5)                         done
4919          (%i6) a[x];
4920          (%o6)                          a
4921                                          x
4922
4923 -- Eigenschaft: nonscalar
4924
4925     Hat ein Symbol die Eigenschaft 'nonscalar', verh�lt es sich wie
4926     eine Matrix oder Liste bei nicht-kommutativen Rechenoperationen.
4927
4928 -- Funktion: nonscalarp (<expr>)
4929
4930     Gibt 'true' zur�ck, wenn der Ausdruck <expr> kein Skalar ist.  Der
4931     Ausdruck enth�lt dann Matrizen, Listen oder Symbole, die als
4932     'nonscalar' deklariert wurden.
4933
4934 -- Eigenschaft: posfun
4935
4936     'declare(f, posfun)' deklariert die Funktion 'f' als eine Funktion,
4937     die nur positive Werte annimmt.  'is(f(x) > 0)' gibt dann 'true'
4938     zur�ck.
4939
4940 -- Funktion: printprops (<a>, <i>)
4941 -- Funktion: printprops ([<a_1>, ..., <a_n>], <i>)
4942 -- Funktion: printprops (all, <i>)
4943
4944     Zeigt die zum Kennzeichen <i> zugeordnete Eigenschaft des Atoms <a>
4945     an.  <i> kann einer der Werte 'gradef', 'atvalue', 'atomgrad' oder
4946     'matchdeclare' sein.  <a> kann sowohl eine Liste von Atomen, als
4947     auch das Atom 'all' sein.  In diesem Fall werden alle Atome
4948     angezeigt, die eine Eigenschaft zum Kennzeichen <i> haben.
4949
4950     Beispiel:
4951
4952          (%i1) gradef(f(x), 2*g(x));
4953          (%o1)                         f(x)
4954          (%i2) printprops(f,gradef);
4955                                 d
4956                                 -- (f(x)) = 2 g(x)
4957                                 dx
4958
4959          (%o2)                         done
4960
4961 -- Funktion: properties (<a>)
4962
4963     Gibt eine Liste mit den Eigenschaften zur�ck, die das Symbol <a>
4964     von Maxima oder dem Nutzer erhalten hat.  Die R�ckgabe kann jede
4965     Eigenschaft enthalten, die mit der Funktion 'declare' einem Symbol
4966     zugewiesen ist.  Diese Eigenschaften sind:
4967
4968        linear         additive       multiplicative
4969        outative       commutative    symmetric
4970        antisymmetric  nary           lassociativ
4971        rassociative   evenfun        oddfun
4972        bindtest       feature        alphabetic
4973        scalar         nonscalar      nonarray
4974        constant       integer        noninteger
4975        even           odd            rational
4976        irrational     real           imaginary
4977        complex        increasing     decreasing
4978        posfun         integervalued
4979
4980     Die folgenden Eintr�ge beschreiben Eigenschaften, die Variablen
4981     haben k�nnen:
4982
4983     'value'
4984          Der Variable ist mit dem Operatoren ':' oder '::' ein Wert
4985          zugewiesen.
4986     'system value'
4987          Die Variable ist eine Optionsvariable oder Systemvariable, die
4988          von Maxima definiert ist.
4989     'numer'
4990          Die Variable hat einen numerischen Wert auf der
4991          Eigenschaftsliste, der mit der Funktion 'numerval' zugewiesen
4992          ist.
4993     'assign property'
4994          Die Variable hat eine eine Funktion auf der Eigenschaftsliste,
4995          die die Zuweisung eines Wertes kontrolliert.
4996
4997     Eintr�ge, die die Eigenschaften von Funktionen beschreiben:
4998
4999     'function'
5000          Eine mit dem Operator ':=' oder der Funktion 'define'
5001          definierte Nutzerfunktion.
5002     'macro'
5003          Eine mit dem Operator '::=' definierte Makrofunktion.
5004     'system function'
5005          Ein interne Maxima-Funktion.
5006     'special evaluation form'
5007          Eine Maxima-Spezialform, die die Argumente nicht auswertet.
5008     'transfun'
5009          Wird eine Nutzerfunktion mit 'translate' �bersetzt oder mit
5010          der Funktion 'compile' kompiliert, erh�lt sie die Eigenschaft
5011          'transfun'.  Interne Maxima-Funktionen, die mit dem Lisp-Makro
5012          'defmfun' definiert werden, haben ebenfalls diese Eigenschaft.
5013     'deftaylor'
5014          F�r die Funktion ist eine Taylorreihenentwicklung definiert.
5015     'gradef'
5016          Die Funktion hat eine Ableitung.
5017     'integral'
5018          Die Funktion hat eine Stammfunktion.
5019     'distribute over bags'
5020          Ist das Argument der Funktion eine Liste, Matrix oder
5021          Gleichung so wird die Funktion auf die Elemente oder beide
5022          Seiten der Gleichung angewendet.
5023     'limit function'
5024          Es existiert eine Funktion f�r die Behandlung spezieller
5025          Grenzwerte.
5026     'conjugate function'
5027          Es existiert eine Funktion, um die konjugiert komplexe
5028          Funktion f�r spezielle Wertebereiche zu ermitteln.
5029     'mirror symmetry'
5030          Die Funktion hat die Eigenschaft der Spiegelsymmetrie.
5031     'complex characteristic'
5032          Es existiert eine Funktion, um den Realteil und den
5033          Imagin�rteil der Funktion f�r spezielle Wertebereiche zu
5034          ermitteln.
5035     'user autoload function'
5036          Die Funktion wird automatisch beim ersten Aufruf aus einer
5037          Datei geladen.  Der Nutzer kann mit dem Funktion
5038          'setup_autoload' eine solche Funktion definieren.
5039
5040     Weitere Eigenschaften, die Symbole erhalten k�nnen:
5041
5042     'operator'
5043          Das Symbol ist ein Maxima-Operator oder ein nutzerdefinierte
5044          Operator.
5045
5046     'rule'
5047          Die Funktion oder der Operator haben eine Regel f�r die
5048          Vereinfachung.
5049
5050     'alias'
5051
5052     'database info'
5053          Das Symbol hat Eintr�ge in Maximas Datenbank.
5054
5055     'hashed array, declared array, complete array'
5056          Ein Hashed-Array, ein deklariertes Array oder ein Array dessen
5057          Elemente einen bestimmten Typ haben.
5058
5059     'array function'
5060          Eine Array-Funktion die mit dem Operator ':=' definiert ist.
5061
5062     'atvalue'
5063          Dem Symbol ist mit der Funktion 'atvalue' ein Wert an einer
5064          Stelle zugewiesen.
5065
5066     'atomgrad'
5067          F�r das Symbol ist mit der Funktion 'gradef' eine Ableitung
5068          definiert.
5069
5070     'dependency'
5071          F�r das Symbol ist eine Abh�ngigkeit mit der Funktion
5072          'depends' definiert.
5073
5074     'matchdeclare'
5075          Das Symbol ist eine mit 'matchdeclare' definierte
5076          Mustervariable, der eine Aussagefunktion zugeordnet ist.
5077
5078     'modedeclare'
5079          F�r das Symbol ist mit der Funktion 'mode_declare' ein Typ
5080          definiert.
5081
5082     'user properties'
5083
5084     'context'
5085          Das Symbol bezeichnet einen Kontext.
5086
5087     'activecontext'
5088          Das Symbol bezeichnet einen aktiven Kontextes.
5089
5090 -- Systemvariable: props
5091     Standardwert: '[]'
5092
5093     'props' ist eine Liste der Symbole, die vom Nutzer eine Eigenschaft
5094     erhalten haben, die in die Lisp-Eigenschaftsliste des Symbols
5095     eingetragen wird.  Neben den Funktionen 'put' und 'qput', mit denen
5096     der Nutzer direkt eine Eigenschaft zu einem Symbol in die
5097     Lisp-Eigenschaftsliste eintragen kann, legen auch Maxima-Funktionen
5098     Eigenschaften zu Symbolen in der Eigenschaftsliste ab und tragen
5099     diese Symbole in die Systemvariable 'props' ein.  Zu diesen
5100     Funktionen geh�ren zum Beispiel 'declare', 'numerval',
5101     'matchdeclare', 'mode_declare', 'gradef' oder 'setup_autoload'.
5102
5103     Nach dem Start von Maxima sollte die Systemvariable 'props' keine
5104     Symbole enthalten.  Das ist jedoch nicht der Fall und kann als ein
5105     Fehler betrachtet werden, der in Zukunft zu beheben ist.
5106
5107 -- Funktion: propvars (<prop>)
5108
5109     Gibt eine Liste mit den Atomen zur�ck, die in der Informationsliste
5110     'props' eingetragen sind und die die Eigenschaft <prop> haben.  Zum
5111     Beispiel gibt 'propvars(atvalue)' eine Liste der Atome zur�ck, die
5112     die Eigenschaft 'atvalue' haben.
5113
5114 -- Funktion: put (<atom>, <value>, <indicator>)
5115
5116     Weist den Wert <value> der Eigenschaft <indicator> des Atoms <atom>
5117     zu.  <indicator> kann eine beliebige Eigenschaft sein und
5118     beschr�nkt sich nicht auf die vom System definierten Eigenschaften.
5119     'put' wertet die Argumente aus.  'put' gibt <value> zur�ck.
5120
5121     Beispiele:
5122
5123          (%i1) put (foo, (a+b)^5, expr);
5124                                             5
5125          (%o1)                       (b + a)
5126          (%i2) put (foo, "Hello", str);
5127          (%o2)                         Hello
5128          (%i3) properties (foo);
5129          (%o3)            [[user properties, str, expr]]
5130          (%i4) get (foo, expr);
5131                                             5
5132          (%o4)                       (b + a)
5133          (%i5) get (foo, str);
5134          (%o5)                         Hello
5135
5136 -- Funktion: qput (<atom>, <value>, <indicator>)
5137
5138     Entspricht der Funktion 'put' mit dem Unterschied, dass 'qput' die
5139     Argumente nicht auswertet.
5140
5141     Beispiele:
5142
5143          (%i1) foo: aa$
5144          (%i2) bar: bb$
5145          (%i3) baz: cc$
5146          (%i4) put (foo, bar, baz);
5147          (%o4)                          bb
5148          (%i5) properties (aa);
5149          (%o5)                [[user properties, cc]]
5150          (%i6) get (aa, cc);
5151          (%o6)                          bb
5152          (%i7) qput (foo, bar, baz);
5153          (%o7)                          bar
5154          (%i8) properties (foo);
5155          (%o8)            [value, [user properties, baz]]
5156          (%i9) get ('foo, 'baz);
5157          (%o9)                          bar
5158
5159 -- Eigenschaft: rational
5160 -- Eigenschaft: irrational
5161
5162     Hat eine Variable mit der Funktion 'declare' die Eigenschaft
5163     'rational' oder 'irrational' erhalten, wird sie von Maxima als eine
5164     rationale Zahl oder als eine nicht rationale Zahl interpretiert.
5165
5166 -- Eigenschaft: real
5167 -- Eigenschaft: imaginary
5168 -- Eigenschaft: complex
5169
5170     Hat eine Variable mit der Funktion 'declare' die Eigenschaft
5171     'real', 'imaginary' oder 'complex' erhalten, wird sie von Maxima
5172     als eine reelle Zahl, imagin�re Zahl oder als eine komplexe Zahl
5173     interpretiert.
5174
5175 -- Funktion: rem (<atom>, <indicator>)
5176
5177     Entfernt die Eigenschaft <indicator> vom Atom <atom>.
5178
5179 -- Funktion: remove (<a_1>, <p_1>, ..., <a_n>, <p_n>)
5180 -- Funktion: remove ([<a_1>, ..., <a_m>], [<p_1>, ..., <p_n>], ...)
5181 -- Funktion: remove ("<a>", operator)
5182 -- Funktion: remove (<a>, transfun)
5183 -- Funktion: remove (all, <p>)
5184
5185     Entfernt Eigenschaften von Atomen.
5186
5187     'remove(<a_1>, <p_1>, ..., <a_n>, <p_n>)' entfernt die Eigenschaft
5188     'p_k' von dem Atom 'a_k'.
5189
5190     'remove([<a_1>, ..., <a_m>], [<p_1>, ..., <p_n>], ...)' entfernt
5191     die Eigenschaften <p_1>, ..., <p_n> von den Atomen <a_1>, ...,
5192     <a_m>.  Es k�nnen mehrere Paare an Listen angegeben werden.
5193
5194     'remove(all, <p>)' entfernt die Eigenschaft <p> von allen Atomen,
5195     die diese Eigenschaft aufweisen.
5196
5197     Die zu entfernenden Eigenschaften k�nnen vom System definierte
5198     Eigenschaften wie 'function', 'macro', 'mode_declare' oder
5199     nutzerdefinierte Eigenschaften sein.
5200
5201     'remove("<a>", operator)' oder 'remove("<a>", op)' entfernen vom
5202     Atom <a> die Operatoreigenschaften, die mit den Funktionen
5203     'prefix', 'infix', 'nary', 'postfix', 'matchfix' oder 'nofix'
5204     definiert wurden.  Die Namen von Operatoren m�ssen als eine
5205     Zeichenkette angegeben werden.
5206
5207     'remove' gibt immer 'done' zur�ck.
5208
5209 -- Eigenschaft: scalar
5210
5211     Hat ein Symbol die Eigenschaft 'scalar', verh�lt es sich wie ein
5212     Skalar bei nicht-kommutativen Rechenoperationen.
5213
5214 -- Funktion: scalarp (<expr>)
5215
5216     Gibt 'true' zur�ck, wenn der Ausdruck <expr> eine Zahl, Konstante,
5217     ein als Skalar definiertes Symbol oder ein aus diesen Objekten
5218     zusammengesetzter Ausdruck ist.  Der Ausdruck darf jedoch keine
5219     Liste oder eine Matrix sein.
5220
5221
5222File: maxima.info,  Node: Funktionen und Variablen f�r Fakten,  Next: Funktionen und Variablen f�r Aussagen,  Prev: Funktionen und Variablen f�r Eigenschaften,  Up: Maximas Datenbank
5223
522411.3 Funktionen und Variablen f�r Fakten
5225========================================
5226
5227 -- Funktion: activate (<context_1>, ..., <context_n>)
5228
5229     Das Kommando 'activate(<context>)' aktiviert den Kontext <context>.
5230     Der Funktion 'activate' k�nnen mehrere Kontexte <context_1>, ...,
5231     <context_n> �bergeben werden.  Nur die Aussagen und Fakten eines
5232     aktiven Kontextes stehen f�r die Auswertung von Aussagen zur
5233     Verf�gung.
5234
5235     Maxima gibt 'done' zur�ck, wenn der Kontext erfolgreich aktiviert
5236     werden konnte oder wenn der Kontext bereits aktiv ist.  Wird
5237     versucht einen nicht existierenden Kontext zu aktivieren, gibt
5238     Maxima eine Fehlermeldung aus.
5239
5240     Das Kommando 'facts()' gibt die Fakten und Aussagen des aktuellen
5241     Kontextes aus.  Die Aussagen und Fakten anderer Kontexte k�nnen
5242     zwar aktiv sein, sind aber in der R�ckgabe von 'facts' nicht
5243     enthalten.  Um die Aussagen und Fakten eines anderen als des
5244     aktuellen Kontexts auszugeben, kann das Kommando 'facts(<context>)'
5245     ausgef�hrt werden.
5246
5247     Die Systemvariable 'activecontexts' enth�lt eine Liste der aktiven
5248     Kontexte.  Siehe auch die Systemvariable 'contexts' f�r eine Liste
5249     aller Kontexte, die Maxima kennt.
5250
5251 -- Systemvariable: activecontexts
5252     Standardwert: '[]'
5253
5254     Die Systemvariable 'activecontexts' enth�lt eine Liste der
5255     Kontexte, die mit der Funktion 'activate' aktiviert wurden.
5256     Unterkontexte sind aktiv, ohne dass die Funktion 'activate'
5257     aufgerufen werden muss und sind nicht in der Liste 'activecontexts'
5258     enthalten.  Siehe auch die Funktion 'activate' f�r die Aktivierung
5259     eines Kontextes und die Systemvariable 'contexts' f�r eine Liste
5260     aller vorhandenen Kontexte.
5261
5262 -- Funktion: askinteger (<expr>, integer)
5263 -- Funktion: askinteger (<expr>)
5264 -- Funktion: askinteger (<expr>, even)
5265 -- Funktion: askinteger (<expr>, odd)
5266
5267     Das Kommando 'askinteger(<expr>, integer)' versucht anhand der
5268     Aussagen und Fakten der aktiven Kontexte zu entscheiden, ob <expr>
5269     eine ganze Zahl repr�sentiert.  Kann 'askinteger' die Frage nicht
5270     entscheiden, fragt Maxima den Nutzer.  Die Antwort wird dem
5271     aktuellen Kontext hinzugef�gt.  'askinteger(<expr>)' ist �quivalent
5272     zu 'askinteger(<expr>, integer)'.
5273
5274     'askinteger(<expr>, even)' und 'askinteger(<expr>, odd)' versuchen
5275     zu entscheiden, ob <expr> eine gerade oder ungerade ganze Zahl
5276     repr�sentiert.  Kann Maxima dies nicht entscheiden, wird der Nutzer
5277     gefragt.  Die Antwort wird dem aktuellen Kontext hinzugef�gt.
5278
5279     Beispiele:
5280
5281          (%i1) askinteger(n,integer);
5282          Is n an integer?
5283          yes;
5284          (%o1)                          yes
5285          (%i2) askinteger(e,even);
5286          Is e an even number?
5287          yes;
5288          (%o2)                          yes
5289          (%i3) facts();
5290          (%o3)           [kind(n, integer), kind(e, even)]
5291          (%i4) declare(f,integervalued);
5292          (%o4)                         done
5293          (%i5) askinteger(f(x));
5294          (%o5)                          yes
5295
5296 -- Funktion: asksign (<expr>)
5297
5298     Die Funktion 'asksign' versucht zu entscheiden, ob der Ausdruck
5299     <expr> einen positiven, negativen oder den Wert Null repr�sentiert.
5300     Kann Maxima dies nicht feststellen, wird der Nutzer nach weiteren
5301     Informationen gefragt, um die Frage zu entscheiden.  Die Antworten
5302     des Nutzers werden f�r die laufende Auswertung dem aktuellen
5303     Kontext hinzugef�gt.  Der R�ckgabewert der Funktion 'asksign' ist
5304     'pos', 'neg' oder 'zero' f�r einen positiven, negativen oder den
5305     Wert Null.
5306
5307 -- Funktion: assume (<pred_1>, ..., <pred_n>)
5308
5309     F�gt die Aussagen <pred_1>, ..., <pred_n> dem aktuellen Kontext
5310     hinzu.  Eine inkonsistente oder redundante Aussage wird dem Kontext
5311     nicht hinzugef�gt.  'assume' gibt eine Liste mit den Aussagen
5312     zur�ck, die dem Kontext hinzugef�gt wurden, oder die Symbole
5313     'redunant' und 'inconsistent'.
5314
5315     Die Aussagen <pred_1>, ..., <pred_n> k�nnen nur Ausdr�cke mit den
5316     relationalen Operatoren '"<"', '"<="', 'equal', 'notequal', '">="'
5317     und '">"' sein.  Aussagen k�nnen nicht die Operatoren '"="' f�r
5318     Gleichungen oder '"#"' f�r Ungleichungen enthalten.  Auch k�nnen
5319     keine Aussagefunktionen wie 'integerp' verwendet werden.
5320
5321     Zusammengesetzte Aussagen mit dem Operator 'and' der Form '<pred_1>
5322     and ... and <pred_n>' sind m�glich, nicht dagegen Aussagen mit dem
5323     Operator 'or' der Form '<pred_1> or ... or <pred_n>'.  Ein Ausdruck
5324     mit dem Operator 'not' der Form 'not(<pred_k>)' ist dann m�glich,
5325     wenn <pred_k> eine relationale Aussage ist.  Aussagen der Form 'not
5326     (<pred_1> and <pred_2>)' und 'not (<pred_1> or <pred_2>)' sind
5327     dagegen nicht m�glich.
5328
5329     Der Folgerungsmechanismus von Maxima ist nicht sehr stark.  Viele
5330     Schlu�folgerungen k�nnen von Maxima nicht abgeleitet werden.  Dies
5331     ist eine bekannte Schw�che von Maxima.
5332
5333     'assume' behandelt keine Aussagen mit komplexen Zahlen.  Enth�lt
5334     eine Aussage eine komplexe Zahl, gibt 'assume' den Wert
5335     'inconsistent' oder 'redunant' zur�ck.
5336
5337     'assume' wertet die Argumente aus.
5338
5339     Siehe auch 'is', 'facts', 'forget', 'context' und 'declare'.
5340
5341     Beispiele:
5342
5343          (%i1) assume (xx > 0, yy < -1, zz >= 0);
5344          (%o1)              [xx > 0, yy < - 1, zz >= 0]
5345          (%i2) assume (aa < bb and bb < cc);
5346          (%o2)                  [bb > aa, cc > bb]
5347          (%i3) facts ();
5348          (%o3)     [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
5349          (%i4) is (xx > yy);
5350          (%o4)                         true
5351          (%i5) is (yy < -yy);
5352          (%o5)                         true
5353          (%i6) is (sinh (bb - aa) > 0);
5354          (%o6)                         true
5355          (%i7) forget (bb > aa);
5356          (%o7)                       [bb > aa]
5357          (%i8) prederror : false;
5358          (%o8)                         false
5359          (%i9) is (sinh (bb - aa) > 0);
5360          (%o9)                        unknown
5361          (%i10) is (bb^2 < cc^2);
5362          (%o10)                       unknown
5363
5364 -- Optionsvariable: assumescalar
5365     Standardwert: 'true'
5366
5367     Die Optionsvariable 'assumescalar' kontrolliert, wie ein Ausdruck
5368     von den arithmetischen Operatoren '"+"', '"*"', '"^"', '"."' und
5369     '"^^"' behandelt wird, wenn Maxima nicht ermitteln kann, ob der
5370     Ausdruck ein Skalar oder Nicht-Skalar ist.  'assumescalar' hat drei
5371     m�gliche Werte:
5372
5373     'false'
5374          Unbekannte Ausdr�cke werden als ein Nicht-Skalar behandelt.
5375
5376     'true'
5377          Unbekannte Ausdr�cke werden als ein Skalar f�r die
5378          kommutativen arithmetischen Operatoren '"+"', '"*"' und '"^"'
5379          behandelt.
5380
5381     'all'
5382          Unbekannte Ausdr�cke werden f�r alle arithmetischen Operatoren
5383          als ein Skalar behandelt.
5384
5385     Es ist besser Variablen als ein Skalar oder Nicht-Skalar mit der
5386     Funktion 'declare' zu deklarieren, anstatt die Vereinfachung mit
5387     der Optionsvariablen 'assumescalar' zu kontrollieren.  Siehe auch
5388     die Eigenschaften 'scalar' und 'nonscalar' sowie die Funktionen
5389     'scalarp' und 'nonscalarp'.
5390
5391     Beispiele:
5392
5393     Maxima kann nicht ermitteln, ob das Symbol 'x' ein Skalar oder ein
5394     Nicht-Skalar ist.
5395
5396          (%i1) scalarp(x);
5397          (%o1)                         false
5398          (%i2) nonscalarp(x);
5399          (%o2)                         false
5400
5401     Hat 'assumescalar' den Wert 'true', behandelt Maxima das Symbol 'x'
5402     als einen Skalar f�r die kommutative Multiplikation.
5403
5404          (%i3) x * [a,b,c], assumescalar:false;
5405          (%o3)                      x [a, b, c]
5406          (%i4) x * [a,b,c], assumescalar:true;
5407          (%o4)                    [a x, b x, c x]
5408
5409     F�r die nicht kommutative Multiplikation behandelt Maxima das
5410     Symbol 'x' dann als einen Skalar, wenn 'assumescalar' den Wert
5411     'all' hat.
5412
5413          (%i5) x . [a,b,c], assumescalar:false;
5414          (%o5)                     x . [a, b, c]
5415          (%i6) x . [a,b,c], assumescalar:true;
5416          (%o6)                     x . [a, b, c]
5417          (%i7) x . [a,b,c], assumescalar:all;
5418          (%o7)                 [x . a, x . b, x . c]
5419
5420 -- Optionsvariable: assume_pos
5421     Standardwert: 'false'
5422
5423     Die Optionsvariable 'assume_pos' kontrolliert das Ergebnis der
5424     Funktionen 'sign' und 'asksign', f�r den Fall, dass Maxima das
5425     Vorzeichen einer Variablen oder indizierten Variablen nicht aus den
5426     aktiven Kontexten ermitteln kann.  Hat 'assume_pos' den Wert
5427     'true', dann wird f�r Variable oder indizierte Variable, immer das
5428     Ergebnis 'pos' ermittelt, wenn die Optionsvariable
5429     'assume_pos_pred' den Standardwert 'false' hat und das Vorzeichen
5430     nicht aus den aktiven Kontexten ermittelt werden kann.
5431
5432     Die Optionsvariable 'assume_pos_pred' hat den Standardwert 'false'.
5433     In diesem Fall werden von Maxima Variablen und indizierte Variablen
5434     als positiv angenommen, wenn 'assume_pos' den Wert 'true' hat.  Der
5435     Optionsvariablen 'assume_pos_pred' kann eine Aussagefunktion mit
5436     einem Argument zugewiesen werden.  Hat die Aussagefunktion f�r ein
5437     Argument <expr> das Ergebnis 'true', wird das Argument als positiv
5438     angenommen, wenn die Optionsvariable 'assume_pos' den Wert 'true'
5439     hat und Maxima das Vorzeichen nicht aus den aktiven Kontexten
5440     ermitteln kann.
5441
5442     Die Funktionen 'sign' und 'asksign' versuchen das Vorzeichen eines
5443     Ausdrucks anhand der Vorzeichen der Argumente zu ermitteln.  Sind
5444     zum Beispiel 'a' und 'b' beide positiv, dann wird f�r den Ausdruck
5445     'a+b' ein positives Vorzeichen ermittelt.  Auch wenn die Vorzeichen
5446     der Variablen 'a' und 'b' nicht bekannt sind, hat daher
5447     'asksign(a+b)' das Ergebnis 'pos', wenn 'assume_pos' den Wert
5448     'true' hat, da in diesem Fall die Variablen als positiv angenommen
5449     werden.
5450
5451     Es gibt jedoch keine M�glichkeit, alle Ausdr�cke grunds�tzlich als
5452     positiv zu erkl�ren.  Selbst wenn der Optionsvariablen
5453     'assume_pos_pred' eine Aussagefunktion zugewiesen wird, die alle
5454     Ausdr�cke als positiv erkl�rt, werden Differenzen 'a-b' oder das
5455     Vorzeichen der Logarithmusfunktion 'log(a)' nicht als positiv
5456     ermittelt.  Die Fragen der Funktion 'asksign' an den Nutzer k�nnen
5457     daher nie vollst�ndig mit dem Mechanismus der Optionsvariablen
5458     'assume_pos' unterdr�ckt werden.
5459
5460     Siehe f�r weitere Beispiele die Optionsvariable 'assume_pos_pred'.
5461
5462     Beispiele:
5463
5464     Das Vorzeichen der Variablen 'x' ist nicht bekannt.  Erh�lt die
5465     Optionsvariable 'assume_pos' den Wert 'true', wird f�r die Variable
5466     'x' und die indizierte Variable 'x[1]' ein positives Vorzeichen
5467     ermittelt.
5468
5469          (%i1) sign(x);
5470          (%o1)                          pnz
5471          (%i2) assume_pos:true;
5472          (%o2)                         true
5473          (%i3) sign(x);
5474          (%o3)                          pos
5475          (%i4) sign(x[1]);
5476          (%o4)                          pos
5477
5478     Die Vorzeichen der Variablen 'a' und 'b' sind nicht bekannt.
5479     Maxima ermittelt ein positives Vorzeichen f�r die Summe der
5480     Variablen.  Das Vorzeichen der Differenz ist dagegen weiterhin
5481     nicht bekannt.
5482
5483          (%i5) sign(a+b);
5484          (%o5)                          pos
5485          (%i6) sign(a-b);
5486          (%o6)                          pnz
5487
5488 -- Optionsvariable: assume_pos_pred
5489     Standardwert: 'false'
5490
5491     Der Optionsvariablen 'assume_pos_pred' kann eine Aussagefunktion
5492     wie zum Beispiel 'symbolp' oder ein Lambda-Ausdruck mit einem
5493     Argument 'x' zugewiesen werden.  Hat die Optionsvariable
5494     'assume_pos' den Wert 'true', werden Variablen, indizierte
5495     Variablen oder die Werte von Funktionen dann als positiv
5496     angenommen, wenn die Aussagefunktion das Ergebnis 'true' hat.
5497
5498     Die Aussagefunktion wird intern von den Funktionen 'sign' und
5499     'asksign' aufgerufen, wenn die Optionsvariable 'assume_pos' den
5500     Wert 'true' hat und das Vorzeichen einer Variablen, indizierten
5501     Variablen oder f�r den Wert einer Funktion nicht ermittelt werden
5502     konnte.  Gibt die Aussagefunktion das Ergebnis 'true' zur�ck, wird
5503     das Argument als positiv angenommen.
5504
5505     Hat die Optionsvariable 'assume_pos_pred' den Standardwert 'false'
5506     werden Variablen und indizierte Variablen von Maxima als positiv
5507     angenommen, wenn die Optionsvariable 'assume_pos' den Wert 'true'
5508     hat.  Das entspricht einer Aussagefunktion, die als 'lambda([x],
5509     symbolp(x) or subvarp(x))' definiert wird.
5510
5511     Siehe auch 'assume' und 'assume_pos'.
5512
5513     Beispiele:
5514
5515     Der Optionsvariablen 'assume_pos_pred' wird der Name der
5516     Aussagefunktion 'symbolp' zugewiesen.  Indizierte Variablen werden
5517     nun nicht mehr als positiv angenommen, wie es f�r den Standartwert
5518     'false' gilt.
5519
5520          (%i1) assume_pos: true$
5521          (%i2) assume_pos_pred: symbolp$
5522          (%i3) sign (a);
5523          (%o3)                          pos
5524          (%i4) sign (a[1]);
5525          (%o4)                          pnz
5526
5527     Der Optionsvariablen 'assume_pos_pred' wird ein Lambda-Ausdruck
5528     zugewiesen, der f�r alle Argumente das Ergebnis 'true' hat.  Die
5529     Funktion 'sign' ermittelt nun f�r Variablen, indizierte Variablen
5530     und den Werten von Funktionen ein positives Vorzeichen.  Dies
5531     trifft jedoch nicht f�r die Logarithmusfunktion oder eine Differenz
5532     zu.
5533
5534          (%i1) assume_pos: true$
5535          (%i2) assume_pos_pred: lambda([x], true);
5536          (%o2)                   lambda([x], true)
5537          (%i3) sign(a);
5538          (%o3)                          pos
5539          (%i4) sign(a[1]);
5540          (%o4)                          pos
5541          (%i5) sign(foo(x));
5542          (%o5)                          pos
5543          (%i6) sign(foo(x)+foo(y));
5544          (%o6)                          pos
5545          (%i7) sign(log(x));
5546          (%o7)                          pnz
5547          (%i8) sign(x-y);
5548          (%o8)                          pnz
5549
5550 -- Optionsvariable: context
5551     Standardwert: 'initial'
5552
5553     Die Optionsvariable 'context' enth�lt den Namen des aktuellen
5554     Kontextes.  Das ist der Kontext, der die Aussagen der Funktion
5555     'assume' oder die mit der Funktion 'declare' definierten
5556     Eigenschaften aufnimmt und aus dem die Aussagen mit der Funktion
5557     'forget' oder die Eigenschaften mit der Funktion 'remove' gel�scht
5558     werden.
5559
5560     Wird der Optionsvariablen 'context' der Name eines existierenden
5561     Kontextes zugewiesen, wird dieser zum aktuellen Kontext.  Existiert
5562     der Kontext noch nicht, wird er durch Aufruf der Funktion
5563     'newcontext' erzeugt.
5564
5565     Siehe auch 'contexts' f�r eine allgemeinere Beschreibung von
5566     Kontexten.
5567
5568     Beispiele:
5569
5570     Der Standardkontext ist 'initial'.  Es wird ein neuer Kontext
5571     'mycontext' generiert, der die Aussagen und Eigenschaften aufnimmt.
5572
5573          (%i1) context;
5574          (%o1)                        initial
5575          (%i2) context:mycontext;
5576          (%o2)                       mycontext
5577          (%i3) contexts;
5578          (%o3)             [mycontext, initial, global]
5579          (%i4) assume(a>0);
5580          (%o4)                        [a > 0]
5581          (%i5) declare(b,integer);
5582          (%o5)                         done
5583          (%i6) facts(mycontext);
5584          (%o6)               [a > 0, kind(b, integer)]
5585
5586 -- Systemvariable: contexts
5587     Standardwert: '[initial, global]'
5588
5589     Die Systemvariable 'contexts' enth�lt eine Liste der Kontexte, die
5590     Maxima bekannt sind.  Die Liste enth�lt auch die nicht aktiven
5591     Kontexte.
5592
5593     Die Kontexte 'global' und 'initial' sind immer vorhanden.  Diese
5594     werden von Maxima initialisiert und k�nnen nicht entfernt werden.
5595     Der Kontext 'global' enth�lt Aussagen und Fakten f�r
5596     Systemvariablen und Systemfunktionen.  Mit den Funktionen
5597     'newcontext' oder 'supcontext' kann der Nutzer weitere Kontexte
5598     anlegen.
5599
5600     Die Kontexte haben eine Hierarchie.  Die Wurzel ist immer der
5601     Kontext 'global', der damit ein Unterkontext aller anderen Kontexte
5602     und immer aktiv ist.  Der Kontext 'initial' ist anfangs leer und
5603     nimmt, sofern kein weiterer Kontext angelegt wurde, die Aussagen
5604     und Fakten des Nutzers auf, die mit den Funktionen 'assume' und
5605     'declare' definiert werden.  Mit der Funktion 'facts' k�nnen die
5606     Aussagen und Fakten von Kontexten angezeigt werden.
5607
5608     Die Verwaltung verschiedener Kontexte erm�glicht es, Aussagen und
5609     Fakten in einem Kontext zusammenzustellen.  Durch das Aktivieren
5610     mit der Funktion 'activate' oder Deaktivieren mit der Funktion
5611     'deactivate' k�nnen diese Aussagen und Fakten f�r Maxima verf�gbar
5612     gemacht oder wieder ausgeschaltet werden.
5613
5614     Die Aussagen und Fakten in einem Kontext bleiben so lange
5615     verf�gbar, bis sie mit den Funktionen 'forget' oder 'remove'
5616     gel�scht werden.  Weiterhin kann der gesamte Kontext mit der
5617     Funktion 'killcontext' entfernt werden.
5618
5619     Beispiel:
5620
5621     Das folgende Beispiel zeigt wie ein Kontext 'mycontext' angelegt
5622     wird.  Der Kontext enth�lt die Aussage '[a>0]'.  Der Kontext kann
5623     mit der Funktion 'activate' aktiviert werden, um die Aussage
5624     verf�gbar zu machen.
5625
5626          (%i1) newcontext(mycontext);
5627          (%o1)                       mycontext
5628          (%i2) context;
5629          (%o2)                       mycontext
5630          (%i3) assume(a>0);
5631          (%o3)                        [a > 0]
5632          (%i4) context:initial;
5633          (%o4)                        initial
5634          (%i5) is(a>0);
5635          (%o5)                        unknown
5636          (%i6) activate(mycontext);
5637          (%o6)                         done
5638          (%i7) is(a>0);
5639          (%o7)                         true
5640
5641 -- Funktion: deactivate (<context_1>, ..., <context_n>)
5642
5643     Die Kontexte <context_1>, ..., <context_n> werden deaktiviert.  Die
5644     Aussagen und Fakten dieser Kontexte stehen f�r die Auswertung von
5645     Aussagen nicht mehr zur Verf�gung.  Die Kontexte werden nicht
5646     gel�scht und k�nnen mit der Funktion 'activate' wieder aktiviert
5647     werden.
5648
5649     Die deaktivierten Kontexte werden aus der Liste 'activecontexts'
5650     entfernt.
5651
5652 -- Funktion: facts (<item>)
5653 -- Funktion: facts ()
5654
5655     Ist <item> der Name eines Kontextes, gibt 'facts(<item>)' eine
5656     Liste der Aussagen und Fakten des Kontextes 'item' zur�ck.
5657
5658     Ist <item> nicht der Name eines Kontextes, gibt 'facts(<item>)'
5659     eine Liste mit den Aussagen und Fakten zur�ck, die zu <item> im
5660     aktuellen Kontext bekannt sind.  Aussagen und Fakten die zu einem
5661     anderen aktiven Kontext geh�ren einschlie�lich der Unterkontexte,
5662     sind nicht in der Liste enthalten.
5663
5664     'facts()' gibt eine Liste der Fakten des aktuellen Kontextes
5665     zur�ck.
5666
5667     Beispiel:
5668
5669          (%i1) context:mycontext;
5670          (%o1)                       mycontext
5671          (%i2) assume(a>0, a+b>0, x<0);
5672          (%o2)               [a > 0, b + a > 0, x < 0]
5673          (%i3) facts();
5674          (%o3)               [a > 0, b + a > 0, 0 > x]
5675          (%i4) facts(a);
5676          (%o4)                  [a > 0, b + a > 0]
5677          (%i5) facts(x);
5678          (%o5)                        [0 > x]
5679          (%i6) context:initial;
5680          (%o6)                        initial
5681          (%i7) activate(mycontext);
5682          (%o7)                         done
5683          (%i8) facts();
5684          (%o8)                          []
5685          (%i9) facts(mycontext);
5686          (%o9)               [a > 0, b + a > 0, 0 > x]
5687
5688 -- Funktion: forget (<pred_1>, ..., <pred_n>)
5689 -- Funktion: forget (<L>)
5690
5691     Entfernt Aussagen, die mit 'assume' einem Kontext hinzugef�gt
5692     wurden.  Die Aussagen k�nnen Ausdr�cke sein, die �quivalent aber
5693     nicht unbedingt identisch zu vorherigen Fakten sind.
5694
5695     'forget(<L>)' entfernt alle Aussagen, die in der Liste <L>
5696     enthalten sind.
5697
5698 -- Funktion: is (<expr>)
5699
5700     Versucht festzustellen, ob die Aussage <expr> mit Hilfe der
5701     Aussagen und Fakten der aktiven Kontexte entschieden werden kann.
5702
5703     Kann die Aussage <expr> zu 'true' oder 'false' entschieden werden,
5704     wird das entsprechende Ergebnis zur�ckgegeben.  Andernfalls wird
5705     der R�ckgabewert durch den Schalter 'prederror' bestimmt.  Hat
5706     'prederror' den Wert 'true', wird eine Fehlermeldung ausgegeben.
5707     Ansonsten wird 'unknown' zur�ckgegeben.
5708
5709     Siehe auch 'assume', 'facts' und 'maybe'.
5710
5711     Beispiele:
5712
5713     'is' wertet Aussagen aus.
5714
5715          (%i1) %pi > %e;
5716          (%o1)                       %pi > %e
5717          (%i2) is (%pi > %e);
5718          (%o2)                         true
5719
5720     'is' versucht Aussagen anhand der Aussagen und Fakten der aktiven
5721     Kontexte zu entscheiden.
5722
5723          (%i1) assume (a > b);
5724          (%o1)                        [a > b]
5725          (%i2) assume (b > c);
5726          (%o2)                        [b > c]
5727          (%i3) is (a < b);
5728          (%o3)                         false
5729          (%i4) is (a > c);
5730          (%o4)                         true
5731          (%i5) is (equal (a, c));
5732          (%o5)                         false
5733
5734     Wenn 'is' eine Aussage anhand der Aussagen und Fakten der aktiven
5735     Kontexte nicht entscheiden kann, wird der R�ckgabewert vom Wert des
5736     Schalters 'prederror' bestimmt.
5737
5738          (%i1) assume (a > b);
5739          (%o1)                        [a > b]
5740          (%i2) prederror: true$
5741          (%i3) is (a > 0);
5742          Maxima was unable to evaluate the predicate:
5743          a > 0
5744           -- an error.  Quitting.  To debug this try debugmode(true);
5745          (%i4) prederror: false$
5746          (%i5) is (a > 0);
5747          (%o5)                        unknown
5748
5749 -- Funktion: killcontext (<context_1>, ..., <context_n>)
5750
5751     Das Kommando 'killcontext(<context>)' l�scht den Kontext <context>.
5752
5753     Ist einer der Kontexte der aktuelle Kontext, wird der erste
5754     vorhandene Unterkontext zum aktuellen Kontext.  Ist der erste
5755     verf�gbare Kontext der Kontext 'global', dann wird der Kontext
5756     'initial' zum aktuellen Kontext.  Wird der Kontext 'initial'
5757     gel�scht, dann wird eine neuer leerer Kontext 'initial' erzeugt.
5758
5759     'killcontext' l�scht einen Kontext nicht, wenn dieser ein
5760     Unterkontext des aktuellen Kontextes ist oder wenn der Kontext mit
5761     der Funktion 'activate' aktiviert wurde.
5762
5763     'killcontext' wertet die Argumente aus.  'killcontext' gibt 'done'
5764     zur�ck.
5765
5766 -- Funktion: maybe (<expr>)
5767
5768     Versucht festzustellen, ob die Aussage <expr> anhand der Aussagen
5769     und Fakten der aktive Kontexte entschieden werden kann.
5770
5771     Kann die Aussage als 'true' oder 'false' entschieden werden, gibt
5772     'maybe' entsprechend 'true' oder 'false' zur�ck.  Andernfalls gibt
5773     'maybe' den Wert 'unknown' zur�ck.
5774
5775     'maybe' entspricht der Funktion 'is' mit 'prederror: false'.  Dabei
5776     wird 'maybe' ausgef�hrt, ohne dass 'prederror' einen Wert erh�lt.
5777
5778     Siehe auch 'assume', 'facts' und 'is'.
5779
5780     Beispiele:
5781
5782          (%i1) maybe (x > 0);
5783          (%o1)                        unknown
5784          (%i2) assume (x > 1);
5785          (%o2)                        [x > 1]
5786          (%i3) maybe (x > 0);
5787          (%o3)                         true
5788
5789 -- Funktion: newcontext (<name>)
5790
5791     'newcontext(<name>)' erzeugt einen neuen, leeren Kontext mit dem
5792     Namen <name>.  Der neue Kontext hat den Kontext 'global' als
5793     Subkontext und wird zum aktuellen Kontext.
5794
5795     'newcontext' wertet seine Argumente aus.  'newcontext' gibt 'name'
5796     zur�ck.
5797
5798 -- Optionsvariable: prederror
5799     Standardwert: 'false'
5800
5801     Hat 'prederror' den Wert 'true', wird eine Fehlermeldung
5802     ausgegeben, wenn eine Aussage mit einer 'if'-Anweisung oder der
5803     Funktion 'is' nicht zu 'true' oder 'false' ausgewertet werden kann.
5804
5805     Hat 'prederror' den Wert 'false', wird f�r diese F�lle 'unknown'
5806     zur�ckgegeben.
5807
5808     Siehe auch 'is' und 'maybe'.
5809
5810 -- Funktion: sign (<expr>)
5811
5812     Versucht das Vorzeichen des Ausdrucks <expr> auf Grundlage der
5813     Fakten der aktuellen Datenbank zu finden.  'sign' gibt eine der
5814     folgende Antworten zur�ck: 'pos' (positiv), 'neg' (negative),
5815     'zero' (null), 'pz' (positive oder null), 'nz' (negative oder
5816     null), 'pn' (positiv oder negative) oder 'pnz' (positiv, negative
5817     oder null, f�r den Fall das Vorzeichen nicht bekannt ist).
5818
5819 -- Funktion: supcontext (<name>, <context>)
5820 -- FunKtion: supcontext (<name>)
5821
5822     Erzeugt einen neuen Kontext, mit dem Namen 'name', der den Kontext
5823     'context' als einen Unterkontext enth�lt.  Der Kontext <context>
5824     muss existieren.
5825
5826     Wird <context> nicht angegeben, wird der aktuelle Kontext
5827     angenommen.
5828
5829
5830File: maxima.info,  Node: Funktionen und Variablen f�r Aussagen,  Prev: Funktionen und Variablen f�r Fakten,  Up: Maximas Datenbank
5831
583211.4 Funktionen und Variablen f�r Aussagen
5833==========================================
5834
5835 -- Funktion: charfun (<p>)
5836
5837     Gibt den Wert 0 zur�ck, wenn die Aussage <p> zu 'false' ausgewertet
5838     werden kann und den Wert 1, wenn die Auswertung 'true' liefert.
5839     Kann die Aussage weder zu 'false' oder 'true' ausgewertet werden,
5840     wird eine Substantiv-Form zur�ck gegeben.
5841
5842     Beispiele:
5843
5844          (%i1) charfun (x < 1);
5845          (%o1)                    charfun(x < 1)
5846          (%i2) subst (x = -1, %);
5847          (%o2)                           1
5848          (%i3) e : charfun ('"and" (-1 < x, x < 1))$
5849          (%i4) [subst (x = -1, e), subst (x = 0, e), subst (x = 1, e)];
5850          (%o4)                       [0, 1, 0]
5851
5852 -- Funktion: compare (<x>, <y>)
5853
5854     Liefert den Vergleichsoperator <op> ('<', '<=', '>', '>=', '=' oder
5855     '#'), so dass der Ausdruck 'is(<x> <op> <y>)' zu 'true' ausgewertet
5856     werden kann.  Ist eines der Argumente eine komplexe Zahl, dann wird
5857     'notcomparable' zur�ckgegeben.  Kann Maxima keinen
5858     Vergleichsoperator bestimmen, wird 'unknown' zur�ckgegeben.
5859
5860     Beispiele:
5861
5862          (%i1) compare (1, 2);
5863          (%o1)                           <
5864          (%i2) compare (1, x);
5865          (%o2)                        unknown
5866          (%i3) compare (%i, %i);
5867          (%o3)                           =
5868          (%i4) compare (%i, %i + 1);
5869          (%o4)                     notcomparable
5870          (%i5) compare (1/x, 0);
5871          (%o5)                           #
5872          (%i6) compare (x, abs(x));
5873          (%o6)                          <=
5874
5875     Die Funktion 'compare' versucht nicht festzustellen, ob der
5876     Wertebereich einer Funktion reelle Zahlen enth�lt.  Obwohl der
5877     Wertebereich von 'acos(x^2+1)' bis auf Null keine reellen Zahlen
5878     enth�lt, gibt 'compare' das folgende Ergebnis zur�ck:
5879
5880          (%i1) compare (acos (x^2 + 1), acos (x^2 + 1) + 1);
5881          (%o1)                           <
5882
5883 -- Funktion: equal (<a>, <b>)
5884
5885     Repr�sentiert die �quivalenz, das hei�t den gleichen Wert.
5886
5887     'equal' wird nicht ausgewertet oder vereinfacht.  Die Funktion 'is'
5888     versucht einen Ausdruck mit 'equal' zu einem booleschen Wert
5889     auszuwerten.  'is(equal(<a>, <b>))' gibt 'true' oder 'false'
5890     zur�ck, wenn und nur wenn <a> und <b> gleich oder ungleich sind f�r
5891     alle Werte ihrer Variablen, was mit 'ratsimp(<a> - <b>)' bestimmt
5892     wird.  Gibt 'ratsimp' das Ergebnis 0 zur�ck, werden die beiden
5893     Ausdr�cke als �quivalent betracht.  Zwei Ausdr�cke k�nnen
5894     �quivalent sein, obwohl sie nicht syntaktisch gleich (im
5895     allgemeinen identisch) sind.
5896
5897     Kann 'is' einen Ausdruck mit 'equal' nicht zu 'true' oder 'false'
5898     auswerten, h�ngt das Ergebnis vom Wert des globalen Flags
5899     'prederror' ab.  Hat 'prederror' den Wert 'true', gibt 'is' eine
5900     Fehlermeldung zur�ck.  Ansonsten wird 'unknown' zur�ckgegeben.
5901
5902     Es gibt weitere Operatoren, die einen Ausdruck mit 'equal' zu
5903     'true' oder 'false' auswerten k�nnen.  Dazu geh�ren 'if', 'and',
5904     'or' und 'not'.
5905
5906     Die Umkehrung von 'equal' ist 'notequal'.
5907
5908     Beispiele:
5909
5910     'equal' wird von allein weder ausgewertet noch vereinfacht:
5911
5912          (%i1) equal (x^2 - 1, (x + 1) * (x - 1));
5913                                  2
5914          (%o1)            equal(x  - 1, (x - 1) (x + 1))
5915          (%i2) equal (x, x + 1);
5916          (%o2)                    equal(x, x + 1)
5917          (%i3) equal (x, y);
5918          (%o3)                      equal(x, y)
5919
5920     Die Funktion 'is' versucht, 'equal' zu einem booleschen Wert
5921     auszuwerten.  Der Ausdruck 'is(equal(<a>, <b>))' gibt den Wert
5922     'true' zur�ck, when 'ratsimp(<a> - <b>)' den Wert 0 hat.  Zwei
5923     Ausdr�cke k�nnen �quivalent sein, obwohl sie nicht syntaktisch
5924     gleich sind.
5925
5926          (%i1) ratsimp (x^2 - 1 - (x + 1) * (x - 1));
5927          (%o1)                           0
5928          (%i2) is (equal (x^2 - 1, (x + 1) * (x - 1)));
5929          (%o2)                         true
5930          (%i3) is (x^2 - 1 = (x + 1) * (x - 1));
5931          (%o3)                         false
5932          (%i4) ratsimp (x - (x + 1));
5933          (%o4)                          - 1
5934          (%i5) is (equal (x, x + 1));
5935          (%o5)                         false
5936          (%i6) is (x = x + 1);
5937          (%o6)                         false
5938          (%i7) ratsimp (x - y);
5939          (%o7)                         x - y
5940          (%i8) is (equal (x, y));
5941          (%o8)                        unknown
5942          (%i9) is (x = y);
5943          (%o9)                         false
5944
5945     Kann 'is' einen Ausdruck mit 'equal' nicht zu 'true' oder 'false'
5946     vereinfachen, h�ngt das Ergebnis vom Wert des globalen Flags
5947     'prederror' ab.
5948
5949          (%i1) [aa : x^2 + 2*x + 1, bb : x^2 - 2*x - 1];
5950                              2             2
5951          (%o1)             [x  + 2 x + 1, x  - 2 x - 1]
5952          (%i2) ratsimp (aa - bb);
5953          (%o2)                        4 x + 2
5954          (%i3) prederror : true;
5955          (%o3)                         true
5956          (%i4) is (equal (aa, bb));
5957          Maxima was unable to evaluate the predicate:
5958                 2             2
5959          equal(x  + 2 x + 1, x  - 2 x - 1)
5960           -- an error.  Quitting.  To debug this try debugmode(true);
5961          (%i5) prederror : false;
5962          (%o5)                         false
5963          (%i6) is (equal (aa, bb));
5964          (%o6)                        unknown
5965
5966     Einige weitere Operatoren werten 'equal' und 'notequal' zu einem
5967     booleschen Wert aus.
5968
5969          (%i1) if equal (y, y - 1) then FOO else BAR;
5970          (%o1)                          BAR
5971          (%i2) eq_1 : equal (x, x + 1);
5972          (%o2)                    equal(x, x + 1)
5973          (%i3) eq_2 : equal (y^2 + 2*y + 1, (y + 1)^2);
5974                                   2                   2
5975          (%o3)             equal(y  + 2 y + 1, (y + 1) )
5976          (%i4) [eq_1 and eq_2, eq_1 or eq_2, not eq_1];
5977          (%o4)                  [false, true, true]
5978
5979     Da 'not <expr>' den Ausdruck <expr> auswertet, ist 'not equal(<a>,
5980     <b>)' �quivalent zu 'is(notequal(<a>, <b>))'
5981
5982          (%i1) [notequal (2*z, 2*z - 1), not equal (2*z, 2*z - 1)];
5983          (%o1)            [notequal(2 z, 2 z - 1), true]
5984          (%i2) is (notequal (2*z, 2*z - 1));
5985          (%o2)                         true
5986
5987 -- Funktion: notequal (<a>, <b>)
5988
5989     Repr�sentiert die Verneinung von 'equal(<a>, <b>)'.
5990
5991     Beispiele:
5992
5993          (%i1) equal (a, b);
5994          (%o1)                      equal(a, b)
5995          (%i2) maybe (equal (a, b));
5996          (%o2)                        unknown
5997          (%i3) notequal (a, b);
5998          (%o3)                    notequal(a, b)
5999          (%i4) not equal (a, b);
6000          (%o4)                    notequal(a, b)
6001          (%i5) maybe (notequal (a, b));
6002          (%o5)                        unknown
6003          (%i6) assume (a > b);
6004          (%o6)                        [a > b]
6005          (%i7) equal (a, b);
6006          (%o7)                      equal(a, b)
6007          (%i8) maybe (equal (a, b));
6008          (%o8)                         false
6009          (%i9) notequal (a, b);
6010          (%o9)                    notequal(a, b)
6011          (%i10) maybe (notequal (a, b));
6012          (%o10)                        true
6013
6014 -- Funktion: unknown (<expr>)
6015
6016     Gibt den Wert 'true' zur�ck, wenn der Ausdruck <expr> einen
6017     Operator oder eine Funktion enth�lt, die nicht von Maximas
6018     Vereinfacher erkannt wird.
6019
6020 -- Funktion: zeroequiv (<expr>, <v>)
6021
6022     Testet, ob ein Ausdruck <expr> mit der Variablen <v> �quivalent zu
6023     Null ist.  Die Funktion gibt 'true', 'false' oder 'dontknow'
6024     zur�ck.
6025
6026     'zeroequiv' hat Einschr�nkungen:
6027
6028       1. Funktionen im Ausdruck <expr> m�ssen von Maxima
6029          differenzierbar und auswertbar sein.
6030
6031       2. Hat der Ausdruck Pole auf der reellen Achse, k�nnen Fehler
6032          auftreten.
6033
6034       3. Enth�lt der Ausdruck Funktionen, die nicht L�sung einer
6035          Differentialgleichung erster Ordnung sind (zum Beispiel Bessel
6036          Funktionen), k�nnen die Ergebnisse fehlerhaft sein.
6037
6038       4. Der Algorithmus wertet die Funktion an zuf�llig Punkten f�r
6039          ausgew�hlte Teilausdr�cke aus.  Dies ist ein riskantes
6040          Verfahren und kann zu Fehlern f�hren.
6041
6042     'zeroequiv(sin(2*x) - 2*sin(x)*cos(x), x)' hat zum Beispiel das
6043     Ergebnis 'true' und 'zeroequiv (%e^x + x, x)' hat das Ergebnis
6044     'false'.  Andererseits hat 'zeroequiv (log(a*b) - log(a) - log(b),
6045     a)' das Ergebnis 'dontknow', wegen dem zus�tzlichem Parameter 'b'.
6046
6047
6048File: maxima.info,  Node: Grafische Darstellung,  Next: Eingabe und Ausgabe,  Prev: Maximas Datenbank,  Up: Top
6049
605012 Grafische Darstellung
6051************************
6052
6053* Menu:
6054
6055* Einf�hrung in die grafische Darstellung::
6056* Grafikformate::
6057* Funktionen und Variablen f�r die grafische Darstellung::
6058* Grafikoptionen::
6059* Gnuplot Optionen::
6060* Gnuplot_pipes Formatfunktionen::
6061
6062
6063File: maxima.info,  Node: Einf�hrung in die grafische Darstellung,  Next: Grafikformate,  Prev: Grafische Darstellung,  Up: Grafische Darstellung
6064
606512.1 Einf�hrung in die grafische Darstellung
6066============================================
6067
6068Maxima verwendet externe Grafikprogramme, um grafische Darstellungen
6069auszugeben.  Die Grafikfunktionen berechnen die Punkte der Grafik und
6070senden diese mit einem Satz an Kommandos an das externe Grafikprogramm.
6071Die Daten werden als Datenstrom �ber eine Pipe oder als eine Datei an
6072das Grafikprogramm �bergeben.  Die Datei erh�lt den Namen
6073'maxout.interface', wobei 'interface' der Name des externen
6074Grafikprogramms ist.  Die m�glichen Dateiendungen sind: 'gnuplot',
6075'xmaxima', 'mgnuplot', 'gnuplot_pipes' oder 'geomview'.
6076
6077Die Datei 'maxout.interface' wird in dem Verzeichnis gespeichert, das
6078durch die Systemvariable 'maxima_tempdir' bezeichnet wird.
6079
6080Die Datei 'maxout.interface' kann wiederholt an das Grafikprogramm
6081�bergeben werden.  Gibt Maxima keine Grafik aus, kann diese Datei
6082gepr�ft werden, um m�gliche Fehler festzustellen.
6083
6084Das Paket 'draw' ist eine Alternative, um Funktionsgraphen und eine
6085Vielzahl anderer Graphen zu erstellen.  Das Paket 'draw' hat einen
6086gr��eren Umfang an Funktionalit�ten und ist flexibler, wenn der Graph
6087besondere Formatierungen enthalten soll.  Einige Grafikoptionen sind in
6088beiden beiden Grafikpaketen vorhanden, k�nnen sich aber in der Syntax
6089unterscheiden.  Mit dem Kommando '? opt', wobei 'opt' eine Grafikoption
6090ist, wird m�glicherweise nur die Dokumentation der
6091Standard-Grafikroutinen angezeigt.  Um auch die entsprechende
6092Grafikoption des Paketes 'draw' zu sehen, kann '?? opt' auf der
6093Kommandozeile eingegeben werden.  Siehe *note draw::.
6094
6095
6096File: maxima.info,  Node: Grafikformate,  Next: Funktionen und Variablen f�r die grafische Darstellung,  Prev: Einf�hrung in die grafische Darstellung,  Up: Grafische Darstellung
6097
609812.2 Grafikformate
6099==================
6100
6101Maxima verwendet f�r die Ausgabe von Grafiken die Grafikprogramme
6102Gnuplot, Xmaxima oder Geomview.  Mit der Grafikoption 'plot_format'
6103k�nnen verschiedene Grafikformate f�r diese Programme ausgew�hlt werden.
6104Die Grafikformate sind:
6105
6106   * *gnuplot* (Standard f�r Windows)
6107
6108     Startet das externe Programm Gnuplot.  Gnuplot muss installiert
6109     sein.  Die Grafikkommandos und Daten werden in die Datei
6110     'maxout.gnuplot' gespeichert.
6111
6112   * *gnuplot_pipes* (Standard, wenn nicht Windows)
6113
6114     Dieses Format ist f�r Windows nicht verf�gbar.  Es ist �hnlich dem
6115     Format 'gnuplot', mit der Ausnahme, dass die Grafikkommandos als
6116     Datenstrom �ber eine Pipe an Gnuplot gesendet werden, w�hrend die
6117     Daten in der Datei 'maxout.gnuplot_pipes' gespeichert werden.  Es
6118     wird nur eine Instanz von Gnuplot gestartet.  Aufeinander folgende
6119     Grafikkommandos werden an ein bereits ge�ffnetes Gnuplot-Programm
6120     gesendet.  Gnuplot wird mit der Funktion 'gnuplot_close'
6121     geschlossen.  In diesem Grafikformat kann die Funktion
6122     'gnuplot_replot' genutzt werden, um eine Grafik zu modifizieren,
6123     die bereits auf dem Bildschirm ausgegeben wurde.
6124
6125     Dieses Grafikformat sollte nur f�r die Ausgabe von Grafiken auf den
6126     Bildschirm verwendet werden.  F�r die Ausgabe von Grafiken in eine
6127     Datei ist das Grafikformat 'gnuplot' besser geeignet.
6128
6129   * *mgnuplot*
6130
6131     Mgnuplot ist eine Tcl/Tk-Anwendung, die Gnuplot f�r die Ausgabe von
6132     Grafiken nutzt.  Die Anwendung ist in der Maxima-Distribution
6133     enthalten.  Mgnuplot bietet eine rudiment�re GUI f�r Gnuplot, hat
6134     aber weniger F�higkeiten als Gnuplot.  Mgnuplot ben�tigt die
6135     Installation von Gnuplot und Tcl/Tk.
6136
6137   * *xmaxima*
6138
6139     Xmaxima ist eine auf Tcl/Tk basierende grafische Nutzeroberfl�che,
6140     die von der Maxima-Konsole gestartet werden kann.  Um dieses
6141     Grafikformat zu nutzen, muss Xmaxima installiert sein, das in der
6142     Distribution von Maxima enthalten ist.  Wird Maxima aus Xmaxima
6143     gestartet, werden die Grafikkommandos und Daten �ber denselben
6144     Socket gesendet, der auch f�r die Kommunikation zwischen Xmaxima
6145     und Maxima ge�ffnet wird.  Wird das Grafikformat von einer Konsole
6146     oder einer anderen Nutzeroberfl�che gestartet, werden die
6147     Grafikkommandos und Daten in die Datei 'maxout.xmaxima'
6148     gespeichert.  Diese Datei wird an Xmaxima f�r die Ausgabe der
6149     Grafik �bergeben.
6150
6151     In fr�heren Versionen wurde dieses Grafikformat 'openmath' genannt.
6152     Dieser Name wird weiterhin als ein Synonym f�r 'xmaxima'
6153     akzeptiert.
6154
6155   * *geomview*
6156
6157     Geomview ist ein - auf Motif basierendes - interaktives 3D Programm
6158     f�r Unix, das auch verwendet werden kann, um Plots von Maxima
6159     anzuzeigen.  Um dieses Format zu verwenden muss das Programm
6160     geomview installiert sein.
6161
6162
6163File: maxima.info,  Node: Funktionen und Variablen f�r die grafische Darstellung,  Next: Grafikoptionen,  Prev: Grafikformate,  Up: Grafische Darstellung
6164
616512.3 Funktionen und Variablen f�r die grafische Darstellung
6166===========================================================
6167
6168 -- Funktion: contour_plot (<expr>, <x_range>, <y_range>, <options>,
6169          ...)
6170
6171     Zeichnet einen Konturgraphen (die Isolinien einer Funktion) von
6172     <expr> im Bereich <x_range> und <y_range> mit den Optionen
6173     <options>.  <expr> ist ein Ausdruck oder der Name einer Funktion
6174     'f(x,y)' mit zwei Argumenten.  Alle weiteren Argumente entsprechen
6175     denen der Funktion 'plot3d'.
6176
6177     Die Funktion steht nur f�r die Grafikformate 'gnuplot' und
6178     'gnuplot_pipes' zur Verf�gung.  Das Paket 'implicit_plot' enth�lt
6179     die Funktion 'implicit_plot' mit der f�r alle Grafikformate
6180     Konturgraphen erstellt werden k�nnen.
6181
6182     Beispiele:
6183
6184          (%i1) contour_plot(x^2 + y^2, [x, -4, 4], [y, -4, 4])$
6185
6186     Es kann jede Option genutzt werden, die von der Funktion 'plot3d'
6187     akzeptiert wird.  Standardm��ig zeichnet Gnuplot den Graphen mit 3
6188     Isolinien.  Die Anzahl der Isolinien kann mit der Gnuplot-Option
6189     'gnuplot_preamble' erh�ht werden.  In diesem Beispiel werden 12
6190     Isolinien gezeichnet und die Legende ist entfernt.
6191
6192          (%i1) contour_plot (u^3 + v^2, [u, -4, 4], [v, -4, 4],
6193                        [legend,false],
6194                        [gnuplot_preamble, "set cntrparam levels 12"])$
6195
6196 -- Funktion: get_plot_option (<keyword>, <index>)
6197
6198     Gibt die Werte der Parameter der Option mit dem Namen <keyword>
6199     zur�ck.  Die Optionen und ihre Parameter sind in der Variablen
6200     'plot_options' gespeichert.  Hat <index> den Wert 1 wird der Name
6201     der Option <keyword> zur�ckgeben.  Der Wert 2 f�r <index> gibt den
6202     Wert des ersten Parameters zur�ck, und so weiter.
6203
6204     Siehe auch 'plot_options', 'set_plot_option' und das Kapitel
6205     Grafikoptionen.
6206
6207     Beispiel:
6208
6209          (%i1) get_plot_option(color,1);
6210          (%o1)                         color
6211          (%i2) get_plot_option(color,2);
6212          (%o2)                         blue
6213          (%i3) get_plot_option(color,3);
6214          (%o3)                          red
6215
6216 -- Funktion: implicit_plot (<expr>, <x_range>, <y_range>)
6217 -- Funktion: implicit_plot ([<expr_1>, ..., <expr_n>], <x_range>,
6218          <y_range>)
6219
6220     Zeichnet den Graphen eines oder mehrerer Ausdr�cke, die implizit
6221     gegeben sind.  <expr> ist der Ausdruck der gezeichnet werden soll,
6222     <x_range> ist der Wertebereich der x-Achse und <y_range> der
6223     Wertebereich der y-Achse.  Die Funktion 'implicit_plot' beachtet
6224     die Werte der Parameter der Grafikoptionen, die in der
6225     Systemvariablen 'plot_options' enthalten sind.  Grafikoptionen
6226     k�nnen auch als Argumente �bergeben werden.
6227
6228     Der Algorithmus von 'implicit_plot' stellt Vorzeichenwechsel der
6229     Funktion in den Bereichen <x_range> und <y_range> fest.  F�r
6230     komplizierte Fl�chen kann der Algorithmus versagen.
6231
6232     Die Funktion wird mit dem Kommando 'load(implicit_plot)' geladen.
6233
6234     Beispiel:
6235
6236          (%i1) load(implicit_plot)$
6237          (%i2) implicit_plot (x^2 = y^3 - 3*y + 1, [x, -4, 4], [y, -4, 4])$
6238
6239 -- Funktion: make_transform ([<var1>, <var2>, <var3>], <fx>, <fy>,
6240          <fz>)
6241
6242     Gibt eine Funktion zur�ck, die als Parameter f�r die Grafikoption
6243     'transform_xy' geeignet ist.  Die zwei Argumente <var1> und <var2>
6244     repr�sentieren die zwei unabh�ngigen Variablen der Funktion
6245     'plot3d'.  Das dritte Argument <var3> ist die Funktion, die von den
6246     zwei Variablen abh�ngt.  Die drei Funktionen <fx>, <fy> und <fz>
6247     m�ssen von den drei Argumenten <var1>, <var2> und <var3> abh�ngen
6248     und die Argumente der Funktion 'plot3d' in kartesische Koordinaten
6249     f�r die Ausgabe des Graphen transformieren.
6250
6251     Die Transformationen 'polar_to_xy' f�r die Transformation von
6252     Polarkoordinaten und 'spherical_to_xyz' f�r die Transformation von
6253     Kugelkoordinaten in kartesische Koordinaten sind bereits definiert.
6254
6255     Beispiel:
6256
6257     Definition der Transformation von Zylinderkoordinaten nach
6258     kartesischen Koordinaten.  Die Definition ist identisch mit der f�r
6259     'polar_to_xy'.  Der Graph zeigt einen Kegel.
6260
6261          (%i1) cylinder_to_xy:make_transform([r,phi,z],r*cos(phi),
6262                                                        r*sin(phi),z)$
6263          (%i2) plot3d(-r,[r,0,3],[phi,0,2*%pi],
6264                                  [transform_xy, cylinder_to_xy])$
6265
6266 -- Systemfunktion: polar_to_xy
6267
6268     Kann als Parameter der Grafikoption 'transform_xy' der Funktion
6269     'plot3d' �bergeben werden.  Der Parameter 'polar_to_xy' bewirkt,
6270     dass die zwei unabh�ngigen Variablen der Funktion 'plot3d' von
6271     Polarkoordinaten in kartesische Koordinaten transformiert werden.
6272
6273     F�r ein Beispiele siehe 'make_transform'.
6274
6275 -- Funktion: plot2d (<plot>, <x_range>, ..., <options>, ...)
6276 -- Funktion: plot2d ([<plot_1>, ..., <plot_n>], ..., <options>, ...)
6277 -- Funktion: plot2d ([<plot_1>, ..., <plot_n>], <x_range>, ...,
6278          <options>, ...)
6279
6280     <plot>, <plot_1>, ..., <plot_n> sind Ausdr�cke, Namen von
6281     Funktionen oder Listen, mit denen diskrete Punkte oder Funktionen
6282     in einer parametrischen Darstellung angegeben werden.  Diskrete
6283     Punkte k�nnen als '[discrete, [<x1>, ..., <xn>], [<y1>, ...,
6284     <yn>]]' oder als '[discrete, [[<x1>, <y1>], ..., [<xn>, ...,
6285     <yn>]]' angegeben werden.  Eine parametrische Darstellung hat die
6286     Form '[parametric, <x_expr>, <y_expr>, <t_range>]'.
6287
6288     Die Funktion 'plot2d' zeichnet einen zweidimensionalen Graphen
6289     einer oder mehrerer Ausdr�cke als Funktion einer Variablen oder
6290     eines Parameters.  Mit der Grafikoption <x_range> wird der Name der
6291     unabh�ngigen Variablen und deren Bereich angegeben.  Die Syntax der
6292     Grafikoption <x_range> ist: '[<variable>, <min>, <max>]'.
6293
6294     Ein diskreter Graph wird durch eine Liste definiert, die mit dem
6295     Schl�sselwort <disrecte> beginnt.  Es folgen ein oder zwei Listen
6296     mit den Werten.  Werden zwei Listen �bergeben, m�ssen diese
6297     dieselbe L�nge haben.  Die Daten der ersten Listen werden als die
6298     x-Koordinaten der Punkte und die der zweiten als die y-Koordinaten
6299     der Punkte interpretiert.  Wird nur eine Liste �bergeben, sind die
6300     Elemente Listen mit je zwei Elementen, die die x- und y-Koordinaten
6301     der Punkte repr�sentieren.
6302
6303     Ein parametrischer Graph wird durch eine Liste definiert, die mit
6304     dem Schl�sselwort <parametric> beginnt.  Es folgen zwei Ausdr�cke
6305     oder Namen von Funktionen und ein Parameter.  Der Bereich f�r den
6306     Parameter muss eine Liste sein, die den Namen des Parameters,
6307     seinen gr��ten und seinen kleinsten Wert enth�lt: '[<parameter>,
6308     <min>, <max>]'.  Der Graph ist der Weg f�r die zwei Ausdr�cke oder
6309     Namen von Funktionen, wenn der Parameter <parameter> von <min> nach
6310     <max> zunimmt.
6311
6312     Als optionales Argument kann ein Wertebereich f�r die vertikale
6313     Koordinatenachse mit der Grafikoption 'y' angegeben werden: '[y,
6314     <min>, <max>]'.  Die vertikale Achse wird immer mit dem
6315     Schl�sselwort 'y' bezeichnet.  Wird kein Wertebereich 'y'
6316     angegeben, wird dieser durch den gr��ten und kleinsten 'y'-Wert des
6317     zu zeichnenden Graphen festgelegt.
6318
6319     Auch alle anderen Grafikoptionen werden als Listen angegeben, die
6320     mit einem Schl�sselwort beginnen, auf das die Parameter der
6321     Grafikoption folgen.  Siehe 'plot_options'.
6322
6323     Werden mehrere Graphen gezeichnet, wird eine Legende hinzugef�gt,
6324     die die einzelnen Graphen unterscheidet.  Mit der Grafikoption
6325     <legend> k�nnen die Bezeichnungen f�r die Legende festgelegt
6326     werden.  Wird diese Option nicht genutzt, generiert Maxima die
6327     Bezeichnungen der Legende aus den Ausdr�cken oder Namen der
6328     Funktionen, die als Argument �bergeben wurden.
6329
6330     Siehe auch das Kapitel 'Grafikoptionen'.
6331
6332     Beispiele:
6333
6334     Graph einer einfachen Funktion.
6335
6336          (%i1) plot2d (sin(x), [x, -%pi, %pi])$
6337
6338     W�chst die Funktion sehr schnell, kann es notwendig sein, die Werte
6339     auf der vertikalen Achse mit der Grafikoption 'y' zu begrenzen.
6340
6341          (%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
6342
6343     Die Ansicht eines Graphen kann sich f�r verschiedene
6344     Grafikprogramme unterscheiden.  In Xmaxima bewirkt die Grafikoption
6345     '[box, false]', das die Koordinatenachsen mit Pfeilen dargestellt
6346     werden.
6347
6348          (%i1) plot2d ( x^2 - 1, [x, -3, 3], [box, false], grid2d,
6349                [yx_ratio, 1], [axes, solid], [xtics, -2, 4, 2],
6350                [ytics, 2, 2, 6], [label, ["x", 2.9, -0.3],
6351                ["x^2-1", 0.1, 8]], [title, "A parabola"])$
6352
6353     Ein Graph mit einer logarithmischen Skala:
6354
6355          (%i1) plot2d (exp(3*s), [s, -2, 2], logy)$
6356
6357     Graphen von Funktionen, deren Namen als Argumente �bergeben werden.
6358
6359          (%i1) F(x) := x^2 $
6360          (%i2) :lisp (defun |$g| (x) (m* x x x))
6361          $g
6362          (%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
6363          (%i3) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
6364
6365     Graph einer parametrisch definierten Schmetterlingskurve.
6366
6367          (%i1) r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5)$
6368          (%i2) plot2d([parametric, r*sin(t), r*cos(t), [t, -8*%pi, 8*%pi]])$
6369
6370     Graph der Funktion 'abs(x)' und eines parametrischen Kreises.  Das
6371     Seitenverh�ltnis der Grafik wurde mit den Grafikoptionen 'same_xy'.
6372
6373          (%i1) plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
6374                   [x, -sqrt(2), sqrt(2)], same_xy)$
6375
6376     Graph f�r diskrete Punkte.  Die Punkte sind in zwei separaten
6377     Listen jeweils f�r die x- und y-Koordinaten angegeben.
6378     Standardm��ig werden die Punkte mit einer Linie verbunden.
6379
6380          (%i1) plot2d ([discrete, makelist(i*%pi, i, 1, 5),
6381                                      [0.6, 0.9, 0.2, 1.3, 1]])$
6382
6383     In diesem Beispiel wird eine Tabelle mit drei Spalten in eine Datei
6384     'data.txt' gespeichert.  Die Datei wird gelesen und die zweite und
6385     dritte Spalte werden gezeichnet.
6386
6387          (%i1) with_stdout ("data.txt", for x:0 thru 10 do
6388                                       print (x, x^2, x^3))$
6389          (%i2) data: read_matrix ("data.txt")$
6390          (%i3) plot2d ([discrete, transpose(data)[2], transpose(data)[3]],
6391            [style,points], [point_type,diamond], [color,red])$
6392
6393     Graph von experimentellen Datenpunkten zusammen mit einer
6394     theoretischen Funktion, die die Daten beschreibt.
6395
6396          (%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
6397          (%i2) plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
6398                  [style, points, lines], [color, red, blue],
6399                  [point_type, asterisk],
6400                  [legend, "experiment", "theory"],
6401                  [xlabel, "pendulum's length (cm)"],
6402                  [ylabel, "period (s)"])$
6403
6404 -- Funktion: plot3d (<expr>, <x_range>, <y_range>, ..., <options>, ...)
6405 -- Funktion: plot3d ([<expr_1>, ..., <expr_n>], <x_range>, <y_range>,
6406          ..., <options>, ...)
6407
6408     Zeichnet einen Graph mit einer oder mehreren Fl�chen, die als eine
6409     Funktion von zwei Variablen oder in parametrischer Form definiert
6410     sind.
6411
6412     Die zu zeichnenden Funktionen werden als Ausdr�cke oder mit ihrem
6413     Namen als Argumente �bergeben.  Mit der Maus kann der Graph rotiert
6414     werden, um die Fl�che aus verschiedenen Blickwinkeln zu betrachten.
6415
6416     Siehe auch das Kapitel Grafikoptionen.
6417
6418     Beispiele:
6419
6420     Graph einer einfachen Funktion.
6421
6422          (%i1) plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
6423                  [mesh_lines_color,false])$
6424
6425     Mit der Grafikoption 'z' wird der Wertebereich der z-Achse
6426     begrenzt.  Dieses Beispiel zeigt den Graph ohne F�rbung der Fl�che.
6427
6428          (%i1) plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
6429                         [palette, false], [color, magenta, blue])$
6430
6431     Unendlich gro�e Werte der z-Koordinate k�nnen auch durch Wahl eines
6432     Gitters vermieden werden, das nicht mit einer der Asymptoten
6433     zusammenf�llt.  Das Beispiel zeigt zudem die Nutzung einer Palette.
6434
6435          (%i1) plot3d (log (x^2*y^2), [x, -2, 2], [y, -2, 2],[grid, 29, 29],
6436                 [palette, [gradient, red, orange, yellow, green]],
6437                 color_bar, [xtics, 1], [ytics, 1], [ztics, 4],
6438                 [color_bar_tics, 4])$
6439
6440     Graph mit zwei Fl�chen mit verschiedenen Wertebereichen.
6441
6442          (%i1) plot3d ([[-3*x - y, [x, -2, 2], [y, -2, 2]],
6443             4*sin(3*(x^2 + y^2))/(x^2 + y^2), [x, -3, 3], [y, -3, 3]],
6444             [x, -4, 4], [y, -4, 4])$
6445
6446     Graph der kleinschen Flasche, die parametrisch definiert ist.
6447
6448          (%i1) expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
6449          (%i2) expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
6450          (%i3) expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
6451          (%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
6452                  [y, -%pi, %pi], [grid, 50, 50])$
6453
6454     Graph einer Kugelfunktion, die vordefinierte
6455     Koordinatentransformation 'spherical_to_xyz' wird verwendet, um von
6456     Kugelkoordinaten in ein kartesisches Koordinatensystem zu
6457     transformieren.
6458
6459          (%i1) plot3d (sin(2*theta)*cos(phi), [theta, 0, %pi],
6460                  [phi, 0, 2*%pi],
6461                  [transform_xy, spherical_to_xyz], [grid,30,60],
6462             [legend,false])$
6463
6464     Gebrauch der vordefinierten Funktion 'polar_to_xy', um von
6465     zylindrischen Koordinaten in ein kartesisches Koordinatensystem zu
6466     transformieren.  Siehe auch 'polar_to_xy'.  Dieses Beispiel zeigt
6467     auch wie der Rahmen und die Legende entfernt werden k�nnen.
6468
6469          (%i1) plot3d (r^.33*cos(th/3), [r,0,1], [th,0,6*%pi], [box, false],
6470             [grid, 12, 80], [transform_xy, polar_to_xy], [legend, false])$
6471
6472     Graph einer Kugel, wobei die Koordinatentransformation von
6473     Kugelkoordinaten in ein kartesisches Koordinatensystem genutzt
6474     wird.
6475
6476          (%i1) plot3d ( 5, [theta, 0, %pi], [phi, 0, 2*%pi], same_xyz,
6477            [transform_xy, spherical_to_xyz], [mesh_lines_color,blue],
6478            [palette,[gradient,"#1b1b4e", "#8c8cf8"]], [legend, false])$
6479
6480     Definition einer Funktion mit zwei Variablen als eine Matrix.  Der
6481     Quote-Operator ''' in der Definition der Funktion verhindert, das
6482     'plot3d' fehlschl�gt, wenn die Argumente keine ganze Zahlen sind.
6483
6484          (%i1) M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
6485          (%i2) f(x, y) := float('M [round(x), round(y)])$
6486          (%i3) plot3d (f(x,y), [x,1,4],[y,1,4],[grid,3,3],[legend,false])$
6487
6488     Wird die H�henangabe 'elevation' auf Null gesetzt, kann die Fl�che
6489     als eine Karte betrachtet werden.  Jede Farbe repr�sentiert einen
6490     anderen Wert der Fl�che.
6491
6492          (%i1) plot3d (cos (-x^2 + y^3/4), [x,-4,4], [y,-4,4], [zlabel,""],
6493                 [mesh_lines_color,false], [elevation,0], [azimuth,0],
6494                 color_bar, [grid,80,80], [ztics,false], [color_bar_tics,1])$
6495
6496 -- Systemvariable: plot_options
6497
6498     Die Elemente dieser Liste definieren die Standardwerte f�r die
6499     Ausgabe von Graphen.  Ist einer der Werte ein Argument der
6500     Funktionen 'plot2d' oder 'plot3d', wird der Standardwert
6501     �berschrieben.  Die Standardwerte k�nnen mit der Funktion
6502     'set_plot_option' gesetzt werden.  Einige Grafikoptionen sind nicht
6503     in der Liste 'plot_options' enthalten.
6504
6505     Jedes Element der Liste 'plot_options' ist eine Liste mit zwei oder
6506     mehr Eintr�gen.  Der erste Eintrag ist der Name der Grafikoption.
6507     Die weiteren Eintr�ge sind die Parameter der Option.  In einigen
6508     F�llen kann der Parameter einer Option wiederum eine Liste sein.
6509
6510     Siehe auch 'set_plot_option', 'get_plot_option' und das Kapitel
6511     Grafikoptionen.
6512
6513 -- Funktion: set_plot_option (<option>)
6514
6515     Akzeptiert die meisten der Optionen, die im Kapitel Grafikoptionen
6516     aufgelistet sind und speichert diese in der globalen Variable
6517     'plot_options'.  'set_plot_options' wertet die Argumente aus und
6518     gibt die vollst�ndige Liste 'plot_optons' zur�ck.
6519
6520     Siehe auch 'plot_options', 'get_plot_option' und das Kapitel
6521     Grafikoptionen.
6522
6523     Beispiele:
6524
6525     Setze einen neue Werte f�r die Grafikoption 'grid'.
6526
6527          (%i1) set_plot_option ([grid, 30, 40]);
6528          (%o1) [[t, - 3, 3], [grid, 30, 40], [transform_xy, false],
6529          [run_viewer, true], [axes, true], [plot_format, gnuplot_pipes],
6530          [color, blue, red, green, magenta, black, cyan],
6531          [point_type, bullet, circle, plus, times, asterisk, box, square,
6532          triangle, delta, wedge, nabla, diamond, lozenge],
6533          [palette, [hue, 0.25, 0.7, 0.8, 0.5],
6534          [hue, 0.65, 0.8, 0.9, 0.55], [hue, 0.55, 0.8, 0.9, 0.4],
6535          [hue, 0.95, 0.7, 0.8, 0.5]], [gnuplot_term, default],
6536          [gnuplot_out_file, false], [nticks, 29], [adapt_depth, 5],
6537          [gnuplot_preamble, ], [gnuplot_default_term_command,
6538          set term pop], [gnuplot_dumb_term_command, set term dumb 79 22],
6539          [gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript \
6540          eps enhanced color solid 24], [plot_realpart, false]]
6541
6542 -- Systemfunktion: spherical_to_xyz
6543
6544     Kann als Parameter f�r die Option 'transform_xy' der Funktion
6545     'plot3d' �bergeben werden.  Der Parameter 'spherical_to_xyz'
6546     bewirkt, dass die zwei unabh�ngigen Variablen und die Funktion beim
6547     Aufruf von 'plot3d' von Kugelkoordinaten in kartesische Koordinaten
6548     umgerechnet werden.
6549
6550
6551File: maxima.info,  Node: Grafikoptionen,  Next: Gnuplot Optionen,  Prev: Funktionen und Variablen f�r die grafische Darstellung,  Up: Grafische Darstellung
6552
655312.4 Grafikoptionen
6554===================
6555
6556Die Grafikoptionen bestehen aus einer Liste, die mit einem Schl�sselwort
6557beginnt und ein oder mehrere Parameter enth�lt.  Die meisten Optionen
6558k�nnen mit den Funktionen 'plot2d', 'plot3d', 'contour_plot' oder
6559'implicit_plot' genutzt und mit der Funktion 'set_plot_option' gesetzt
6560werden.  Auf Ausnahmen wird im Folgenden hingewiesen.
6561
6562 -- Grafikoption: adapt_depth [adapt_depth, <integer>]
6563     Standardwert: '5'
6564
6565     Die maximale Zahl an Teilungen von Intervallen, die der adaptive
6566     Algorithmus f�r das Zeichnen eines Graphen vornimmt.  Zusammen mit
6567     der Grafikoption 'nticks' hat diese Grafikoption Einfluss darauf,
6568     wie glatt der Graph gezeichnet wird.
6569
6570 -- Grafikoption: axes [axes, <symbol>]
6571     Standardwert: 'true'
6572
6573     'symbol' kann einen der Werte 'true', 'false', 'x' oder 'y'
6574     annehmen.  Ist der Wert 'false', werden keine Achsen gezeichnet.
6575     Mit 'x' oder 'y' werden nur die x- oder nur die y-Achse gezeichnet.
6576     Mit 'true' werden beide Achsen gezeichnet.  Diese Option wird nur
6577     von den Funktionen 'plot2d' und 'implicit_plot' beachtet.
6578
6579 -- Grafikoption: azimuth [azimuth, <number>]
6580     Standardwert: '30'
6581
6582     Setzt den Wert des Azimutwinkels in Grad f�r die Ansicht einer
6583     dreidimensionalen Grafik.  Siehe auch 'elevation'.
6584
6585 -- Grafikoption: box [box, <symbol>]
6586     Standardwert: 'true'
6587
6588     Hat die Grafikoption 'box' den Wert 'true', erh�lt die Grafik einen
6589     Rahmen.  Ist der Wert 'false', wird kein Rahmen gezeichnet.
6590
6591 -- Grafikoption: color [color, <color_1>, ..., <color_n>]
6592     Standardwert: '[blue, red, green, magenta, black, cyan]'
6593
6594     Wenn die Funktionen 'plot2d' oder 'implicit_plot' mehrere Graphen
6595     zeichnen, definiert die Grafikoption 'color' die Farben der
6596     einzelnen Graphen.  F�r einen 3D-Graphen mit der Funktion 'plot3d'
6597     definiert die Grafikoption 'color' die Farbe der Fl�chen.
6598
6599     Gibt es mehr Kurven oder Fl�chen als Farben, werden die Farben
6600     wiederholt.  Im Grafikformat Gnuplot k�nnen nur die Farben 'blue',
6601     'red', 'green', 'magenta', 'black', 'cyan' verwendet werden.  Im
6602     Grafikformat Xmaxima k�nnen die Farben auch als eine Zeichenkette
6603     angegeben werden, die mit dem Zeichen # beginnt und auf dem sechs
6604     hexadezimale Zahlenwerte folgen.  Je zwei Werte bezeichnen die
6605     rote, gr�ne und blaue Komponente der Farbe.
6606
6607     Siehe auch 'style'.
6608
6609 -- Grafikoption: colorbox [colorbox, <symbol>]
6610     Standardwert: 'false'
6611
6612     Hat die Grafikoption 'colorbox' den Wert 'true', wird immer dann,
6613     wenn das Grafikkommando 'plot3d' eine Palette mit verschiedenen
6614     Farben nutzt, um die z-Werte darzustellen, eine Legende mit den
6615     Farben und den dazugeh�renden z-Werten angezeigt.
6616
6617 -- Grafikoption: elevation [elevation, <number>]
6618     Standardwert: '60'
6619
6620     Setzt den Wert des Elevationswinkels in Grad f�r die Ansicht einer
6621     dreidimensionalen Grafik.  Siehe auch 'azimuth'.
6622
6623 -- Grafikoption: grid [grid, <integer>, <integer>]
6624     Standardwert: '[30, 30]'
6625
6626     Setzt die Anzahl der Gitterlinen f�r die x- und y-Achsen einer
6627     dreidimensionalen Grafik.
6628
6629 -- Grafikoption: legend [legend, <string_1>, ..., <string_n>]
6630 -- Grafikoption: legend [legend, <false>]
6631
6632     Definiert die Eintr�ge einer Legende, wenn mehrere Graphen
6633     gezeichnet werden.  Sind mehr Graphen als Eintr�ge vorhanden,
6634     werden die Eintr�ge wiederholt.  Hat die Grafikoption 'legend' den
6635     Wert 'false', wird keine Legende gezeichnet.  Standardm��ig werden
6636     die Ausdr�cke oder Namen der Funktionen als Eintr�ge verwendet.
6637     F�r diskrete Grafiken werden die Eintr�ge mit discrete1, discrete2,
6638     ... bezeichnet.  Diese Grafikoption kann nicht mit der Funktion
6639     'set_plot_option' gesetzt werden.
6640
6641 -- Grafikoption: logx [logx]
6642
6643     Bewirkt, dass die horizontale Achse logarithmisch skaliert wird.
6644     Diese Grafikoption kann nicht mit der Funktion 'set_plot_option'
6645     gesetzt werden.  Siehe auch 'logy'.
6646
6647 -- Grafikoption: logy [logy]
6648
6649     Bewirkt, dass die vertikale Achse logarithmisch skaliert wird.
6650     Diese Grafikoption kann nicht mit der Funktion 'set_plot_option'
6651     gesetzt werden.  Siehe auch 'logx'.
6652
6653 -- Grafikoption: mesh_lines_color [mesh_lines_color, <color>]
6654     Standardwert: 'black'
6655
6656     Setzt die Farbe, die von der Funktion 'plot3d' genutzt wird, um die
6657     Gitterlinien zu zeichnen.  Es k�nnen dieselben Farben verwendet
6658     werden wie f�r die Grafikoption 'color'.  Hat 'mesh_lines_color'
6659     Wert 'false', werden keine Gitterlinien gezeichnet.
6660
6661 -- Grafikoption: nticks [nticks, <integer>]
6662     Standardwert: '29'
6663
6664     Wird eine Grafik mit der Funktion 'plot2d' gezeichnet, gibt
6665     'nticks' die Anzahl der Anfangspunkte f�r das Zeichnen der Grafik
6666     an.  Werden parametrische Kurven mit den Funktionen 'plot2d' oder
6667     'plot3d' gezeichnet, ist 'nticks' die Anzahl der Punkte, f�r die
6668     der Graph gezeichnet wird.
6669
6670     Zusammen mit der Grafikoption 'adapt_depth' hat diese Grafikoption
6671     Einfluss darauf, wie glatt der Graph gezeichnet wird.
6672
6673 -- Grafikoption: palette [palette, [<palette_1>], ..., [<palette_n>]]
6674 -- Grafikoption: palette [palette, <false>]
6675     Standardwert: '[hue, 0.25, 0.7, 0.8, 0.5], [hue, 0.65, 0.8, 0.9, 0.55],
6676     [hue, 0.55, 0.8, 0.9, 0.4], [hue, 0.95, 0.7, 0.8, 0.5]'
6677
6678     Eine Palette kann aus einer oder einer Liste mit mehreren Paletten
6679     bestehen.  Jede Palette beginnt mit einem Schl�sselwort, worauf 4
6680     Zahlen folgen.  Die ersten drei Zahlen haben Werte zwischen 0 und
6681     1.  Diese definieren den Farbton 'hue', die S�ttigung 'saturation'
6682     und die Grundfarbe 'value', die der kleinste z-Wert erh�lt.  Die
6683     Schl�sselworte 'hue', 'saturation' und 'value' spezifizieren,
6684     welches der drei Attribute mit dem Wert von z ge�ndert werden.  Der
6685     letzte Wert der Liste, spezifiziert, welcher Wert zum gr��ten
6686     z-Wert geh�rt.  Dieser gr��te Wert kann gr��er als 1 und auch
6687     negativ sein.  Die Werte der modifizierten Attribute werden Modulo
6688     1 gerundet.
6689
6690     Gnuplot verwendet nur die erste Palette in einer Liste mit
6691     Paletten.  Xmaxima nutzt alle Paletten nacheinander, wenn mehrere
6692     Fl�chen gezeichnet werden.  Sind nicht gen�gend Paletten vorhanden,
6693     werden die Paletten wiederholt.
6694
6695     Die Farbe der Gitterlinien wird mit der Option 'mesh_lines_color'
6696     angegeben.  Hat 'palette' den Wert 'false', werden die Fl�chen
6697     nicht gef�rbt, sondern als ein Gitternetz gezeichnet.  Die Farbe
6698     der Gitterlinien wird in diesem Fall mit der Grafikoption 'color'
6699     festgelegt.
6700
6701 -- Grafikoption: plot_format [plot_format, <format>]
6702     Standardwert: 'gnuplot' f�r Windows, ansonsten 'gnuplot_pipes'
6703
6704     Setzt das Grafikformat f�r die Ausgabe einer Grafik.  'format' kann
6705     die Werte 'gnuplot', 'xmaxima', 'mgnuplot' oder 'gnuplot_pipes'
6706     annehmen.  Siehe das Kapitel Grafikformate.
6707
6708 -- Grafikoption: plot_realpart [plot_realpart, <symbol>]
6709     Standardwert: 'false'
6710
6711     Hat 'plot_realpart' den Wert 'true', werden Funktionen als komplex
6712     angenommen und der Realteil wird gezeichnet.  Das entspricht dem
6713     Aufruf der Grafikfunktion mit dem Ausdruck 'realpart(<function>)'.
6714     Hat 'plot_realpart' den Wert 'false', wird keine Grafik gezeichnet,
6715     wenn die Funktion keinen Realteil hat.  Zum Beispiel ist 'log(x)'
6716     komplex, wenn <x> negativ ist.  Hat 'plot_realpart' den Wert
6717     'true', wird der Wert 'log(-5)' als 'log(5)' gezeichnet.  Hat
6718     'plot_realpart' den Wert 'false' wird kein Wert gezeichnet.
6719
6720 -- Grafikoption: point_type [point_type, <type_1>, ..., <type_n>]
6721     Standardwert: '[bullet, circle, plus, times, asterisk, box, square,
6722     triangle, delta, wedge, nabla, diamond, lozenge]'
6723
6724     Werden im Grafikformat Gnuplot Punkte mit den Stilen 'points' oder
6725     'linespoints' gezeichnet, werden die Symbole f�r die einzelnen
6726     Datens�tze nacheinander der Liste 'point_type' entnommen.  Gibt es
6727     mehr Datens�tze als Symbole, werden diese wiederholt.  Siehe auch
6728     'style'.
6729
6730 -- Grafikoption: psfile [psfile, <filename>]
6731
6732     Speichert die Grafik in eine Postscript-Datei mit den Namen
6733     <filename>.  Die Grafik wird nicht auf dem Bildschirm ausgegeben.
6734     Standardm��ig wird die Datei in dem Ordner abgespeichert, dessen
6735     Namen in der Optionsvariablen 'maxima_tempdir' enthalten ist.
6736
6737 -- Grafikoption: run_viewer [run_viewer, <symbol>]
6738
6739     Standardwert: 'true'
6740
6741     Kontrolliert, ob die Bildschirmausgabe des Grafikformats gestartet
6742     wird.
6743
6744 -- Grafikoption: style [style, <type_1>, ..., <type1_n>]
6745 -- Grafikoption: style [style, [<style_1>], ..., [<style_n>]]
6746     Standardwert: 'lines'
6747
6748     Bestimmt den Stil f�r das Zeichnen von Funktionen oder Datens�tzen
6749     mit der Funktion 'plot2d'.  Werden mehr Graphen gezeichnet, als
6750     Stile vorhanden sind, werden diese wiederholt.  Die m�glichen Stile
6751     sind 'lines' f�r Linien, 'points' f�r einzelne Punkte,
6752     'linespoints' f�r Linien mit Punkten oder 'dots' f�r kleine Punkte.
6753     Das Grafikformat Gnuplot akzeptiert zus�tzlich den Stil 'impulses'.
6754
6755     Jeder Stil kann weitere Parameter erhalten, die zusammen mit dem
6756     Stil als eine Liste angegeben werden.  Der Stil 'lines' akzeptiert
6757     zwei Zahlen, die die Breite der Linie und deren Farbe angegeben.
6758     Die Standardfarben haben die Zahlenwerte: 1: 'blue', 2: 'red', 3:
6759     'magenta', 4: 'orange', 5: 'brown', 6: 'lime' und 7: 'aqua'.  Im
6760     Grafikformat Gnuplot kann die Kodierung der Farben f�r verschiedene
6761     Terminals abweichend sein.  Wird zum Beispiel das Terminal
6762     [<gnuplot_term>,<ps>] verwendet, entspricht dem Zahlenwert 4 die
6763     Farbe 'black'.
6764
6765     Der Stil 'points' akzeptiert zwei oder drei Parameter.  Der erste
6766     Parameter ist der Radius des Punktes.  Der zweite Parameter ist
6767     eine Zahl, der wie f�r den Stil 'lines' eine Farbe angibt.  Der
6768     dritte Parameter ist eine Zahl, mit der im Grafikformat Gnuplot die
6769     folgenden Zeichen f�r die Darstellung der Punkte ausgew�hlt werden
6770     k�nnen: 1: 'bullet', 2: 'circle', 3: 'plus', 4: 'times', 5:
6771     'asterisk', 6: 'box', 7: 'square', 8: 'triangle', 9: 'delta', 10:
6772     'wedge', 11: 'nabla', 12: 'diamond', 13: 'lozenge'.
6773
6774     Der Stil 'linesdots' akzeptiert bis zu vier Parameter: die Breite
6775     der Linie, den Radius der Punkte, die Farbe und das Symbol f�r das
6776     Zeichnen der Punkte.
6777
6778     Siehe auch die Grafikoptionen 'color' und 'point_type'.
6779
6780 -- Grafikoption: t [t, <min>, <max>]
6781
6782     Bestimmt den Wertebereich f�r das Zeichnen einer parametrischen
6783     Kurve mit der Funktion 'plot2d'.  Die Variable einer parametrischen
6784     Kurve muss mit 't' bezeichnet werden.
6785
6786 -- Grafikoption: transform_xy [transform_xy, <symbol>]
6787     Standardwert: 'false'
6788
6789     <symbol> hat entweder den Wert 'false' oder ist das Ergebnis der
6790     Funktion 'make_transform'.  Wenn verschieden von 'false', wird die
6791     Funktion genutzt, um die drei Koordinaten einer dreidimensionalen
6792     Grafik zu transformieren.
6793
6794     Siehe auch 'polar_to_xy' und 'spherical_to_xyz'.  f�r bereits
6795     vordefinierte Koordinatentransformationen.
6796
6797 -- Grafikoption: x [x, <min>, <max>]
6798
6799     Die erste Grafikoption der Funktionen 'plot2d' oder 'plot3d'
6800     bezeichnet die unabh�ngige Variable.  Die unabh�ngige Variable muss
6801     nicht mit 'x' bezeichnet werden, sondern kann ein beliebiges von
6802     'x' verschiedenes Symbol sein.  Die Werte <min> und <max> geben in
6803     diesem Fall den Wertebereich der unabh�ngigen Variablen an.  Die
6804     Grafikoption 'x' kann ein zweites Mal angegeben werden, um den
6805     Bereich f�r die x-Achse festzulegen.
6806
6807 -- Grafikoption: xlabel [xlabel, <string>]
6808     Standardwert: '"x"'
6809
6810     Legt die Zeichenkette <string> fest, mit der die x-Achse der Grafik
6811     bezeichnet wird.  Der Standardwert ist '"x"' oder der Name der
6812     ersten unabh�ngigen Variablen.  Diese Grafikoption kann nicht mit
6813     dem Kommando 'set_plot_option' gesetzt werden.
6814
6815 -- Grafikoption: y [y, <min>, <max>]
6816
6817     F�r einen dreidimensionalen Graphen legt diese Grafikoption die
6818     zweite unabh�ngige Variable fest.  Die unabh�ngige Variable muss
6819     nicht mit 'y' bezeichnet werden, sondern kann ein beliebiges von
6820     'y' verschiedenes Symbol sein.  Die Werte <min> und <max> geben in
6821     diesem Fall den Wertebereich der Variablen an.  Wird die
6822     Grafikoption f�r einen zweidimensionalen Graphen verwendet oder f�r
6823     einen dreidimensionalen Graphen ein zweites Mal eingesetzt, dann
6824     wird der Bereich f�r die y-Achse festgelegt.
6825
6826 -- Grafikoption: ylabel [ylabel, <string>]
6827     Standardwert: '"y"'
6828
6829     Legt die Zeichenkette <string> fest, mit der die y-Achse der Grafik
6830     bezeichnet wird.  Der Standardwert ist '"y"' oder f�r den Fall
6831     einer dreidimensionalen Grafik der Name der zweiten unabh�ngigen
6832     Variablen.  Diese Grafikoption kann nicht mit dem Kommando
6833     'set_plot_option' gesetzt werden.
6834
6835 -- Grafikoption: z [z, <min>, <max>]
6836
6837     Legt f�r eine dreidimensionalen Grafik den Bereich f�r die z-Achse
6838     fest.
6839
6840 -- Grafikoption: zlabel [zlabel, <string>]
6841     Standardwert: '"z"'
6842
6843     Legt die Zeichenkette <string> fest, mit der die z-Achse der Grafik
6844     bezeichnet wird.  Der Standardwert ist '"z"'.  Diese Grafikoption
6845     kann nicht mit dem Kommando 'set_plot_option' gesetzt werden und
6846     wird von den Funktionen 'plot2d' sowie 'implicit_plot' ignoriert.
6847
6848
6849File: maxima.info,  Node: Gnuplot Optionen,  Next: Gnuplot_pipes Formatfunktionen,  Prev: Grafikoptionen,  Up: Grafische Darstellung
6850
685112.5 Gnuplot Optionen
6852=====================
6853
6854Es gibt einige spezielle Optionen f�r das Grafikformat Gnuplot.  Diese
6855Optionen werden mit einem Schl�sselwort bezeichnet und zusammen mit
6856einer Zeichenkette, die ein g�ltiges Gnuplot-Kommando darstellt, an
6857Gnuplot �bergeben.  In den meisten F�llen gibt es eine entsprechende
6858Grafikoption, die ein vergleichbares Ergebnis erzeugt.  Die
6859Grafikoptionen sollten den Gnuplot-Optionen vorgezogen werden.
6860
6861 -- Grafikoption: gnuplot_term
6862
6863     Setzt den Terminaltyp f�r das Grafikformat Gnuplot.
6864
6865        * *default* (Standardwert)
6866
6867          Die Ausgabe von Gnuplot wird in einem separatem Fenster
6868          angezeigt.
6869
6870        * *dumb*
6871
6872          Die Ausgabe von Gnuplot wird in der Maxima Konsole mit
6873          Ascii-Zeichen angezeigt.
6874
6875        * *ps*
6876
6877          Gnuplot generiert PostScript-Kommandos.  Mit der Grafikoption
6878          'gnuplot_out_file' werden die PostScript-Kommandos in eine
6879          Datei <filename> geschrieben.  Ansonsten werden die Kommandos
6880          in die Datei 'maxplot.ps' geschrieben.
6881
6882        * Jede andere g�ltige Gnuplot Spezifikation
6883
6884     Gnuplot kann Ausgaben in verschiedenen Formaten wie zum Beispiel
6885     PNG, JPEG, SVG generieren.  Die verschiedenen Formate werden mit
6886     der Option 'gnuplot_term' angegeben.  Weiterhin kann jedes g�ltige
6887     Kommando als Zeichenkette �bergeben werden.  Zum Beispiel generiert
6888     '[gnuplot_term, png]' eine Grafik im PNG-Format.  Das Kommando
6889     '[gnuplot_term, "png size 1000, 1000"]' generiert eine Grafik im
6890     PNG-Format mit dem Format 1000 x 1000 Punkte.  Erh�lt die
6891     Grafikoption 'gnuplot_out_file' den Wert <filename>, wird die
6892     Ausgabe in die Datei <filename> geschrieben.  Ansonsten werden die
6893     Kommandos in die Datei 'maxplot.<term>' geschrieben, wobei <term>
6894     das verwendete Grafikformat ist.
6895
6896 -- Grafikoption: gnuplot_out_file
6897
6898     Zusammen mit der Option 'gnuplot_term', kann die Ausgabe in dem
6899     angegebenen Gnuplot-Format in eine Datei geschrieben werden.  Eine
6900     Postscript-Datei kann auch mit der Grafikoption 'psfile' angegeben
6901     werden.  Die Grafikoption 'psfile' funktioniert auch mit dem
6902     Grafikformat 'xmaxima'.
6903
6904          [gnuplot_term, png], [gnuplot_out_file, "graph3.png"]
6905
6906 -- Grafikoption: gnuplot_pm3d
6907
6908     Hat die Grafikoption 'gnuplot_pm3d' den Wert 'false', wird der
6909     PM3D-Modus ausgeschaltet.  Dieser Modus ist standardm��ig
6910     eingeschaltet.
6911
6912 -- Grafikoption: gnuplot_preamble
6913
6914     F�gt Gnuplot-Kommandos ein, die vor dem Zeichnen der Grafik
6915     ausgef�hrt werden.  Jedes g�ltige Gnuplot-Kommando kann verwendet
6916     werden.  Mehrere Kommandos sollten mit einem Semikolon voneinander
6917     getrennt werden.  Der Standardwert der Option 'gnuplot_preamble'
6918     ist eine leere Zeichenkette '""'.
6919
6920 -- Grafikoption: gnuplot_curve_titles
6921
6922     Dies ist eine veraltete Option, die von der Grafikoption 'legend'
6923     ersetzt wurde.
6924
6925 -- Grafikoption: gnuplot_curve_styles
6926
6927     Dies ist eine veraltete Option, die von der Grafikoption 'style'
6928     ersetzt wurde.
6929
6930 -- Grafikoption: gnuplot_default_term_command
6931
6932     Das Gnuplot-Kommando, um den Standardtyp eines Terminals zu setzen.
6933     Der Standardwert ist 'set term pop'.
6934
6935 -- Grafikoption: gnuplot_dumb_term_command
6936
6937     Das Gnuplot-Kommando, um die Breite und H�he des Terminaltyps
6938     'dumb' zu setzen.  Der Standardwert ist '"set term dumb 79 22"'.
6939     Die Ausgabe hat eine Breite von 79 Zeichen und eine H�he von 22
6940     Zeichen.
6941
6942 -- Grafikoption: gnuplot_ps_term_command
6943
6944     Das Gnuplot-Kommando, um die Parameter f�r eine Postscript-Terminal
6945     zu setzen.  Ein Postscript-Terminal hat die Standardwerte '"set
6946     size 1.5, 1.5; set term postscript eps enhanced color solid 24"'.
6947     Das Terminal wird auf den 1,5 fachen Wert des Standardwertes und
6948     die Schriftgr��e auf 24 gesetzt.  Siehe die Gnuplot-Dokumentation
6949     f�r eine Beschreibung weiterer Parameter, die f�r ein
6950     Postscript-Terminal gesetzt werden k�nnen.
6951
6952
6953File: maxima.info,  Node: Gnuplot_pipes Formatfunktionen,  Prev: Gnuplot Optionen,  Up: Grafische Darstellung
6954
695512.6 Gnuplot_pipes Formatfunktionen
6956===================================
6957
6958 -- Funktion: gnuplot_start ()
6959
6960     �ffnet eine Pipe, die im Grafikformat 'gnuplot_pipes' f�r den
6961     Austausch der Daten genutzt wird.
6962
6963 -- Funktion: gnuplot_close ()
6964
6965     Schlie�t die Pipe, die im Grafikformat 'gnuplot_pipes' f�r den
6966     Austausch der Daten genutzt wird.
6967
6968 -- Funktion: gnuplot_restart ()
6969
6970     Schlie�t die Pipe, die im Grafikformat 'gnuplot_pipes' f�r den
6971     Austausch der Daten genutzt wird, und �ffnet eine neue Pipe.
6972
6973 -- Funktion: gnuplot_replot ()
6974 -- Funktion: gnuplot_replot (<string>)
6975
6976     Aktualisiert die Ausgabe von Gnuplot.  Wird 'gnuplot_replot' mit
6977     einer Zeichenkette <string> aufgerufen, die Gnuplot-Kommandos
6978     enth�lt, dann werden die Kommandos vor der Aktualisierung an
6979     Gnuplot gesendet.
6980
6981 -- Funktion: gnuplot_reset ()
6982
6983     Im Grafikformat 'gnuplot_pipes' wird Gnuplot zur�ckgesetzt.  Um die
6984     Anzeige zu aktualisieren, kann das Kommando 'gnuplot_replot' nach
6985     dem Kommando 'gnuplot_reset' ausgef�hrt werden.
6986
6987
6988File: maxima.info,  Node: Eingabe und Ausgabe,  Next: Mengen,  Prev: Grafische Darstellung,  Up: Top
6989
699013 Eingabe und Ausgabe
6991**********************
6992
6993* Menu:
6994
6995* Kommentare::
6996* Dateien::
6997* Funktionen und Variablen f�r die Eingabe und Ausgabe::
6998* Funktionen und Variablen f�r die TeX-Ausgabe::
6999* Funktionen und Variablen f�r die Fortran-Ausgabe::
7000
7001
7002File: maxima.info,  Node: Kommentare,  Next: Dateien,  Prev: Eingabe und Ausgabe,  Up: Eingabe und Ausgabe
7003
700413.1 Kommentare
7005===============
7006
7007Ein Kommentar in der Maxima-Eingabe ist ein Text der von den Zeichen
7008'/*' und '*/' eingeschlossen ist.  Der Maxima-Parser behandelt einen
7009Kommentar wie ein Zwischenraumzeichen, wenn ein Token eingelesen wird.
7010Ein Token endet immer an einem Zwischenraumzeichen.  Eine Eingabe wie
7011'a/* foo */b' enth�lt die beiden Token 'a' und 'b' und nicht das
7012einzelne Token 'ab'.  Ansonsten werden Kommentare von Maxima ignoriert.
7013Kommentare werden im eingelesenen Ausdruck nicht gespeichert.
7014
7015Kommentare k�nnen in beliebiger Tiefe verschachtelt werden.  Die
7016Begrenzungszeichen '/*' und '*/' m�ssen paarweise auftreten.
7017
7018Beispiele:
7019
7020     (%i1) /* aa is a variable of interest */  aa : 1234;
7021     (%o1)                         1234
7022     (%i2) /* Value of bb depends on aa */  bb : aa^2;
7023     (%o2)                        1522756
7024     (%i3) /* User-defined infix operator */  infix ("b");
7025     (%o3)                           b
7026     (%i4) /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
7027     (%o4)                         a b c
7028     (%i5) /* Comments /* can be nested /* to any depth */ */ */  1 + xyz;
7029     (%o5)                        xyz + 1
7030
7031
7032File: maxima.info,  Node: Dateien,  Next: Funktionen und Variablen f�r die Eingabe und Ausgabe,  Prev: Kommentare,  Up: Eingabe und Ausgabe
7033
703413.2 Dateien
7035============
7036
7037Folgende Funktionen und Variablen arbeiten mit Dateien:
7038
7039   appendfile           batch                 batchload
7040   closefile            file_output_append    filename_merge
7041   file_search          file_search_maxima    file_search_lisp
7042   file_search_demo     file_search_usage     file_search_tests
7043   file_type            file_type_lisp        file_type_maxima
7044   load                 load_pathname         loadfile
7045   loadprint            pathname_directory    pathname_name
7046   pathname_type        printfile             save
7047   stringout            with_stdout           writefile
7048
7049
7050File: maxima.info,  Node: Funktionen und Variablen f�r die Eingabe und Ausgabe,  Next: Funktionen und Variablen f�r die TeX-Ausgabe,  Prev: Dateien,  Up: Eingabe und Ausgabe
7051
705213.3 Funktionen und Variablen f�r die Eingabe und Ausgabe
7053=========================================================
7054
7055 -- Funktion: appendfile (<filename>)
7056
7057     Startet wie die Funktion 'writefile' eine Aufzeichnung aller Ein-
7058     und Ausgaben der Konsole.  Die Ein- und Ausgaben werden in die
7059     Datei <filename> geschrieben.  Im Unterschied zu 'writefile' werden
7060     die Daten immer an eine existierende Datei angeh�ngt, wenn diese
7061     existiert.  Existiert die Datei nicht, wird diese angelegt.
7062
7063     Die Funktion 'closefile' beendet die Aufzeichnung.
7064
7065 -- Funktion: batch (<filename>)
7066 -- Funktion: batch (<filename>, option)
7067
7068     Das Kommando 'batch(<filename>)' liest Maxima-Ausdr�cke aus der
7069     Datei <filename> ein, wertet diese aus und gibt die Ergebnisse auf
7070     der Konsole aus.  'batch' sucht die Datei <filename> in den
7071     Verzeichnissen, die in der Liste 'file_search_maxima' enthalten
7072     sind.  Siehe auch die Funktion 'file_search'.
7073
7074     'batch(<filename>, demo)' entspricht dem Kommando
7075     'demo(<filename>)'.  'batch' sucht f�r diesen Fall die Datei in der
7076     Liste der Verzeichnisse 'file_search_demo'.  Siehe auch die
7077     Funktion 'demo'.
7078
7079     'batch(<filename>, test)' entspricht dem Kommando 'run_testsuite'
7080     mit der Option 'display_all=true'.  Im Unterschied zur Funktion
7081     'run_testsuite' sucht die Funktion 'batch' die Datei <filename> in
7082     den Verzeichnissen der Liste 'file_search_maxima' und nicht in der
7083     Liste 'file_search_tests'.
7084
7085     Die Maxima-Ausdr�cke in der Datei werden wie auf der Konsole mit
7086     den Zeichen ';' oder '$' beendet.  Die Systemvariable '%' und die
7087     Funktion '%th' beziehen sich auf vorhergehende Zeilen in der Datei.
7088     Die Datei kann ':lisp'-Unterbrechungskommandos enthalten.
7089     Leerzeichen, Tabulatoren, Zeilenschaltungen und Kommentare werden
7090     ignoriert.  Eine geeignete Datei kann mit einem Texteditor oder der
7091     Funktion 'stringout' erstellt werden.
7092
7093     Den Ein- und Ausgaben werden jeweils Ein- und Ausgabemarken
7094     zugewiesen.  Tritt w�hrend der Auswertung eines Ausdrucks ein
7095     Fehler auf, wird das Einlesen der Datei abgebrochen.  Werden
7096     Eingaben vom Nutzer ben�tigt, wie zum Beispiel bei Fragen der
7097     Funktionen 'asksign' oder 'askinteger', dann wartet 'batch' auf die
7098     Antworten, um dann die Verarbeitung der Datei fortzusetzen.
7099
7100     Die Verarbeitung von 'batch' kann durch die Eingabe von 'control-C'
7101     abgebrochen werden.  Die weitere Reaktion auf einen Abbruch mit
7102     'control-C' h�ngt von der Lisp-Implementation ab.
7103
7104     'batch' wertet die Argumente aus.  'batch' gibt den Namen der Datei
7105     <filename> als Zeichenkette zur�ck, wenn die Funktion ohne zweites
7106     Argument oder mit der Option 'demo' aufgerufen wird.  Wird die
7107     Funktion mit der Option 'test' aufgerufen, ist die R�ckgabe eine
7108     leere Liste '[]' oder eine Liste, die <filename> und die Nummern
7109     der fehlgeschlagenen Tests enth�lt.
7110
7111     Siehe auch die Funktionen 'load' und 'batchload', um Dateien zu
7112     laden, sowie die Funktionen 'run_testsuite' und 'demo'.
7113
7114 -- Funktion: batchload (<filename>)
7115
7116     Liest Ausdr�cke aus der Datei <filename> ein und wertet diese aus,
7117     ohne die eingelesenen und ausgewerteten Ausdr�cke anzuzeigen und
7118     ohne Zuweisung von Eingabe- und Ausgabemarken.  Die Ausgabe von
7119     Fehlermeldungen oder sonstigem Text, der von Funktionen ausgegeben
7120     wird, wird nicht unterdr�ckt.
7121
7122     Die Systemvariable '%' und die Funktion '%th' beziehen sich auf die
7123     letzte Eingabe auf der Konsole und nicht auf Zeilen oder Ergebnisse
7124     der Datei.  Im Gegensatz zur Funktion 'batch' darf eine Datei, die
7125     von 'batchload' geladen wird, keine ':lisp'-Unterbrechungskommandos
7126     enthalten.
7127
7128     'batchload' gibt eine Zeichenkette mit dem Pfad der Datei
7129     <filename> zur�ck.  Siehe auch die Funktionen 'batch' und 'load',
7130     um Dateien zu laden.
7131
7132 -- Funktion: closefile ()
7133
7134     Beendet eine Aufzeichnung, die von den Funktionen 'writefile' oder
7135     'appendfile' gestartet wurde, und schlie�t die Ausgabedatei.
7136
7137 -- Optionsvariable: file_output_append
7138     Standardwert: 'false'
7139
7140     Die Optionsvariable 'file_output_append' kontrolliert, ob die
7141     Funktionen 'save', 'stringout' oder 'with_stdout', die in eine
7142     Datei schreiben, diese l�schen und neu anlegen oder die Daten
7143     anh�ngen.  Wenn 'file_output_append' den Wert 'true' hat, werden
7144     die Daten an die existierende Datei angeh�ngt.  Ansonsten wird eine
7145     neue Datei erstellt.
7146
7147     Plot-Funktionen und der �bersetzer erstellen grunds�tzlich neue
7148     Dateien und die Funktionen 'tex' und 'appendfile' h�ngen die
7149     Ausgabe immer an eine bestehende Datei an.
7150
7151 -- Funktion: filename_merge (<path>, <filename>)
7152
7153     Setzt einen Pfad aus <path> und <filename> zusammen.  Endet <path>
7154     mit einer Zeichenkette der Form '###.<something>', wird diese
7155     Zeichenkette durch '<filename.something>' ersetzt.  Ansonsten wird
7156     der Endbestandteil durch <filename> ersetzt.
7157
7158     Die R�ckgabe ist ein Lisp-Dateiname.
7159
7160     Beispiele:
7161
7162          (%i1) filename_merge("user/", "myfile");
7163          (%o1)                      user/myfile
7164
7165          (%i2) filename_merge("user/###.lisp", "myfile");
7166          (%o2)                   user/myfile.lisp
7167
7168 -- Funktion: file_search (<filename>)
7169 -- Funktion: file_search (<filename>, <pathlist>)
7170
7171     'file_search' sucht die Datei <filename> und gibt den Pfad als eine
7172     Zeichenkette zur�ck, wenn die Datei gefunden wurde.  Ansonsten wird
7173     'false' zur�ckgegeben.  'file_search(<filename>)' sucht in den
7174     Standardsuchverzeichnissen, die mit den Optionsvariablen
7175     'file_search_maxima', 'file_search_lisp' und 'file_search_demo'
7176     spezifiziert werden.
7177
7178     'file_search' pr�ft zuerst, ob die Datei 'filename' existiert.
7179     Dann pr�ft 'file_search', ob die Datei anhand von Mustern im
7180     Dateinamen gefunden werden kann.  Siehe 'file_search_maxima' f�r
7181     die Suche von Dateien.
7182
7183     Das Argument <filename> kann ein Name mit einer Pfadangabe oder
7184     allein der Dateiname sein.  Sind in den Suchverzeichnissen
7185     Dateinamen mit Mustern enthalten, kann die Datei auch ohne Endung
7186     angegeben werden.  Zum Beispiel finden die folgenden Kommandos
7187     dieselbe Datei, wenn '/home/wfs/special/###.mac' in der Liste
7188     'file_search_maxima' enthalten ist:
7189
7190          file_search ("/home/wfs/special/zeta.mac");
7191          file_search ("zeta.mac");
7192          file_search ("zeta");
7193
7194     'file_search(<filename>, <pathlist>)' sucht nur in den
7195     Verzeichnissen <pathlist>.  Das Argument <pathlist> �berschreibt
7196     die Standardsuchverzeichnisse.  Auch ein einzelnes Verzeichnis muss
7197     als eine Liste �bergeben werden.
7198
7199     Die Standardsuchverzeichnisse k�nnen modifiziert werden.  Siehe
7200     dazu auch 'file_search_maxima'.
7201
7202     'file_search' wird von der Funktion 'load' mit den
7203     Verzeichnislisten 'file_search_maxima' und 'file_search_lisp'
7204     aufgerufen.
7205
7206 -- Optionsvariable: file_search_maxima
7207 -- Optionsvariable: file_search_lisp
7208 -- Optionsvariable: file_search_demo
7209 -- Optionsvariable: file_search_usage
7210 -- Optionsvariable: file_search_tests
7211
7212     Diese Optionsvariablen bezeichnen Listen mit Verzeichnissen, die
7213     von Funktionen wie 'load' und 'demo' durchsucht werden, um eine
7214     Datei zu finden.  Die Standardwerte bezeichnen verschiedene
7215     Verzeichnisse der Maxima-Installation.
7216
7217     Diese Variablen k�nnen modifiziert werden, indem die Standardwerte
7218     ersetzt oder weitere Verzeichnisse angeh�ngt werden.  Zum Beispiel
7219     wird im Folgenden der Standardwert der Optionsvariablen
7220     'file_search_maxima' ersetzt:
7221
7222          file_search_maxima: ["/usr/local/foo/###.mac",
7223              "/usr/local/bar/###.mac"]$
7224
7225     In diesem Beispiel werden zwei weitere Verzeichnisse zu der
7226     Optionsvariablen 'file_search_maxima' hinzugef�gt:
7227
7228          file_search_maxima: append (file_search_maxima,
7229              ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
7230
7231     Soll eine erweiterte Liste der Suchverzeichnisse nach jedem Start
7232     von Maxima zur Verf�gung stehen, kann das obige Kommando in die
7233     Datei 'maxima-init.mac' aufgenommen werden.
7234
7235     Mehrere Dateiendungen und Pfade k�nnen mit Wildcard-Konstruktionen
7236     spezifiziert werden.  Eine Zeichenkette '###' wird durch einen
7237     Dateinamen ersetzt.  Werden mehrere Zeichenketten durch Kommata
7238     getrennt und mit geschweiften Klammern angegeben wie zum Beispiel
7239     '{foo, bar, baz}', expandiert die Liste in mehrere Zeichenketten.
7240     Das folgende Beispiel expandiert f�r 'neumann'
7241
7242          "/home/{wfs,gcj}/###.{lisp,mac}"
7243
7244     in '/home/wfs/neumann.lisp', '/home/gcj/neumann.lisp',
7245     '/home/wfs/neumann.mac' und '/home/gcj/neumann.mac'.
7246
7247 -- Funktion: file_type (<filename>)
7248
7249     Gibt eine Vermutung �ber den Typ der Datei <filename> zur�ck.  Es
7250     wird nur die Dateiendung betrachtet.
7251
7252     Die R�ckgabe ist das Symbol 'maxima' oder 'lisp', wenn die
7253     Dateiendung einen der Werte der Optionsvariablen 'file_type_maxima'
7254     oder der Optionsvariablen 'file_type_lisp' entspricht.  Ansonsten
7255     ist die R�ckgabe das Symbol 'object'.
7256
7257     Siehe auch die Funktion 'pathname_type'.
7258
7259 -- Optionsvariable: file_type_lisp
7260     Standardwert: '[l, lsp, lisp]'
7261
7262     Die Optionsvariable 'file_type_lisp' enth�lt die Dateiendungen, die
7263     Maxima als die Bezeichnung f�r eine Lisp-Datei annimmt.
7264
7265     Siehe auch die Funktion 'file_type'.
7266
7267 -- Optionsvariable: file_type_maxima
7268     Standardwert: '[mac, mc, demo, dem, dm1, dm2, dm3, dmt]'
7269
7270     Die Optionsvariable 'file_type_maxima' enth�lt die Dateiendungen,
7271     die Maxima als die Bezeichnung f�r eine Maxima-Datei annimmt.
7272
7273     Siehe auch die Funktion 'file_type'.
7274
7275 -- Funktion: load (<filename>)
7276
7277     Wertet die Ausdr�cke in der Datei <filename> aus, wodurch die
7278     Variablen, Funktionen und andere Objekte in Maxima geladen werden.
7279     Alle bisher zugewiesen Variablen und Definitionen werden
7280     �berschrieben.  Um die Datei zu finden, wird von 'load' die
7281     Funktion 'file_search' mit den Verzeichnislisten
7282     'file_search_maxima' und 'file_search_lisp' aufgerufen.  Ist 'load'
7283     erfolgreich, wird der Dateiname zur�ckgegeben.  Ansonsten gibt
7284     'load' eine Fehlermeldung aus.
7285
7286     'load' verarbeitet Dateien mit Lisp-Code oder Maxima-Code.
7287     Dateien, die mit den Funktionen 'save', 'translate_file' und
7288     'compile_file' erstellt wurden, enthalten Lisp-Code.  Dateien, die
7289     mit 'stringout' erstellt wurden, enthalten Maxima-Code.  Die
7290     Ausgabedateien dieser Funktionen k�nnen mit 'load' geladen werden.
7291     'load' ruft die Funktion 'loadfile' auf, um Lisp-Dateien und
7292     'batchload' auf, um Maxima-Dateien zu verarbeiten.
7293
7294     'load' erkennt keine ':lisp'-Unterbrechungskommandos in
7295     Maxima-Dateien.  Die Systemvariablen '_', '__' und '%' und die
7296     Funktion '%th' behalten jeweils ihren letzten Wert vor dem Aufruf
7297     von 'load'.
7298
7299     Siehe auch die Funktionen 'loadfile', 'batch', 'batchload' und
7300     'demo'.  'loadfile' verarbeitet Lisp-Dateien.  'batch', 'batchload'
7301     und 'demo' verarbeiten Maxima-Dateien.
7302
7303     Siehe 'file_search' f�r mehr Informationen, wie Maxima Dateien in
7304     Verzeichnissen findet.  'load' wertet die Argumente aus.
7305
7306 -- Systemvariable: load_pathname
7307     Standardwert: 'false'
7308
7309     Wird eine Datei mit den Funktionen 'load', 'loadfile' oder
7310     'batchload' geladen, enth�lt die Systemvariable 'load_pathname' den
7311     Namen der Datei.  Der Wert der Systemvariablen kann in der Datei,
7312     die geladen wird, ausgelesen werden.
7313
7314     Beispiele:
7315
7316     Ist eine Batch-Datei mit den Namen 'test.mac' in dem Verzeichnis
7317          "/home/dieter/workspace/mymaxima/temp/"
7318     abgelegt und enth�lt die Datei die folgenden Befehle
7319
7320          print("The value of load_pathname is: ", load_pathname)$
7321          print("End of batchfile")$
7322
7323     dann wird das Folgende ausgegeben:
7324
7325          (%i1) load("/home/dieter/workspace/mymaxima/temp/test.mac")$
7326          The value of load_pathname is:
7327                        /home/dieter/workspace/mymaxima/temp/test.mac
7328          End of batchfile
7329
7330 -- Funktion: loadfile (<filename>)
7331
7332     L�dt die Datei <filename> und wertet die Lisp-Ausdr�cke in der
7333     Datei aus.  'filename' ruft nicht 'file_search' auf, um eine Datei
7334     zu finden.  Daher muss 'filename' ein vollst�ndiger Dateiname sein.
7335
7336     'loadfile' kann Dateien verarbeiten, die mit den Funktionen 'save',
7337     'translate_file' und 'compile_file' erzeugt wurden.
7338
7339 -- Optionsvariable: loadprint
7340     Standardwert: 'true'
7341
7342     'loadprint' kontrolliert, ob Meldungen ausgegeben werden, wenn eine
7343     Datei geladen wird.
7344
7345        * Hat 'loadprint' den Wert 'true', wird immer eine Meldung
7346          ausgegeben.
7347        * Hat 'loadprint' den Wert ''loadfile', wird eine Meldung
7348          ausgegeben, wenn die Datei mit der Funktion 'loadfile' geladen
7349          wird.
7350        * Hat 'loadprint' den Wert ''autoload', wird eine Meldung
7351          ausgegeben, wenn eine Datei automatisch geladen wird.
7352        * Hat 'loadprint' den Wert 'false', werden keine Meldungen beim
7353          Laden von Dateien ausgegeben.
7354
7355 -- Funktion: pathname_directory (<pathname>)
7356 -- Funktion: pathname_name (<pathname>)
7357 -- Funktion: pathname_type (<pathname>)
7358
7359     Diese Funktionen geben die Bestandteile eines Pfadnamens zur�ck.
7360
7361     Beispiele:
7362
7363          (%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
7364          (%o1)                 /home/dieter/maxima/
7365          (%i2) pathname_name("/home/dieter/maxima/changelog.txt");
7366          (%o2)                       changelog
7367          (%i3) pathname_type("/home/dieter/maxima/changelog.txt");
7368          (%o3)                          txt
7369
7370 -- Funktion: printfile (<path>)
7371
7372     Druckt eine Datei mit dem Namen <path> auf der Konsole aus.  <path>
7373     kann ein Symbol oder eine Zeichenkette sein.  'printfile' sucht die
7374     Datei in den Verzeichnissen, die in der Optionsvariablen
7375     'file_search_usage' enthalten sind.
7376
7377     'printfile' gibt <path> zur�ck, wenn die Datei existiert.
7378
7379 -- Funktion: save (<filename>, <name_1>, <name_2>, <name_3>, ...)
7380 -- Funktion: save (<filename>, values, functions, labels, ...)
7381 -- Funktion: save (<filename>, [<m>, <n>])
7382 -- Funktion: save (<filename>, <name_1>=<expr_1>, ...)
7383 -- Funktion: save (<filename>, all)
7384 -- Funktion: save (<filename>, <name_1>=<expr_1>, <name_2>=<expr_2>,
7385          ...)
7386
7387     Speichert die aktuellen Werte von <name_1>, <name_2>, <name_3>,
7388     ..., in die Datei <filename>.  Die Argumente sind die Namen von
7389     Variablen, Funktionen oder anderen Objekten.  Argumente, die keinen
7390     Wert haben, werden ignoriert.  'save' gibt den Namen der Datei
7391     'filename' zur�ck.
7392
7393     'save' speichert die Daten in einem Lisp-Format.  Die gespeicherten
7394     Daten k�nnen mit dem Kommando 'load(<filename>)' zur�ckgelesen
7395     werden.  Siehe 'load'.
7396
7397     Die Optionsvariable 'file_output_append' kontrolliert, ob 'save'
7398     die Daten an die Ausgabedatei anh�ngt, wenn diese bereits
7399     existiert, oder die Ausgabedatei zuvor l�scht.  Hat
7400     'file_output_append' den Wert 'true', werden die Daten angeh�ngt.
7401     Ansonsten wird die Datei gel�scht und neu angelegt, wenn diese
7402     bereits existiert.  Existiert die Ausgabedatei noch nicht, wird
7403     diese angelegt.
7404
7405     'save(<filename>, values, functions, labels, ...)' speichert die
7406     Werte aller Eintr�ge der Listen 'values', 'functions', 'labels',
7407     u.s.w.  in die Ausgabedatei.  Es kann jede der vorhandenen
7408     Informationslisten, die in der Systemvariablen 'infolists'
7409     enthalten ist, als Argument �bergeben werden.  'values' enth�lt zum
7410     Beispiel alle vom Nutzer definierten Variablen.
7411
7412     'save(<filename>, [<m>, <n>])' speichert die Werte der Eingabe- und
7413     Ausgabemarken von <m> bis <n>.  <m> und <n> m�ssen ganze Zahlen
7414     sein.  Die Eingabe- und Ausgabemarken k�nnen auch einzeln
7415     gespeichert werden, zum Beispiel mit dem Kommando 'save("foo.1",
7416     %i42, %o42)'.  'save(<filename>, labels)' speichert alle Eingabe-
7417     und Ausgabemarken.  Beim Zur�cklesen der Marken werden vorhandene
7418     Werte �berschrieben.
7419
7420     'save(<filename>, <name_1> = <expr_1>, <name_2> = <expr_2>, ...)'
7421     speichert die Werte <expr_1>, <expr_2>, ..., unter den Namen
7422     <name_1>, <name_2>, ... ab.  Dies kann n�tzlich sein, um zum
7423     Beispiel die Werte von Marken unter einem neuen Namen
7424     abzuspeichern.  Die rechte Seite der Gleichungen kann ein
7425     beliebiger ausgewerteter Ausdruck sein.  Die neuen Namen werden der
7426     aktuellen Sitzung nicht hinzugef�gt und nur in der Ausgabedatei
7427     gespeichert.
7428
7429     Die verschiedenen M�glichkeiten der Funktion 'save', k�nnen
7430     miteinander kombiniert werden.  Das Kommando 'save(<filename>, aa,
7431     bb, cc=42, functions, [11,17])' ist daf�r ein Beispiel.
7432
7433     'save(<filename>, all)' speichert den aktuellen Zustand von Maxima
7434     in eine Ausgabedatei.  Eingeschlossen sind alle nutzerdefinierten
7435     Variablen, Funktionen oder Arrays, einschlie�lich automatischer
7436     Definitionen.  Die gespeicherten Daten enthalten auch die Werte von
7437     ge�nderten System- oder Optionsvariablen.  Siehe dazu auch
7438     'myoptions'.
7439
7440     'save' wertet das Argument <filename> aus.  Alle anderen Argumente
7441     werden nicht ausgewertet.
7442
7443 -- Funktion: stringout (<filename>, <expr_1>, <expr_2>, <expr_3>, ...)
7444 -- Funktion: stringout (<filename>, [<m>, <n>])
7445 -- Funktion: stringout (<filename>, input)
7446 -- Funktion: stringout (<filename>, functions)
7447 -- Funktion: stringout (<filename>, values)
7448
7449     'stringout' schreibt Ausdr�cke in einem Format in eine Datei, dass
7450     identisch mit dem Format der Eingabe ist.  Die Datei kann als
7451     Eingabedatei f�r die Funktionen 'batch' oder 'demo' genutzt werden.
7452     Sie kann mit einem Texteditor f�r jeden Zweck editiert werden.
7453     'stringout' kann ausgef�hrt werden, wenn das Kommando 'writefile'
7454     aktiv ist.
7455
7456     Die Optionsvariable 'file_output_append' kontrolliert, ob
7457     'stringout' die Daten an die Ausgabedatei anh�ngt, wenn diese
7458     bereits existiert oder die Ausgabedatei zuvor l�scht.  Hat
7459     'file_output_append' den Wert 'true', werden die Daten angeh�ngt,
7460     wenn die Datei bereits existiert.  Ansonsten wird die Datei
7461     gel�scht und neu angelegt.  Existiert die Ausgabedatei noch nicht,
7462     wird diese angelegt.
7463
7464     Die allgemeine Form von 'stringout' schreibt die Werte eines oder
7465     mehrerer Ausdr�cke in die Ausgabedatei.  Ist ein Ausdruck eine
7466     Variable, wird nur der Wert der Variablen, nicht jedoch der Name
7467     der Variablen in die Ausgabedatei geschrieben.  Ein n�tzlicher
7468     Spezialfall ist, dass die Werte der Eingabe- und Ausgabemarken
7469     ('%i1', '%i2', '%i3', ... und '%o1', '%o2', '%o3', ...) in die
7470     Datei geschrieben werden k�nnen.
7471
7472     Hat die Optionsvariable 'grind' den Wert 'true', wird die Ausgabe
7473     im Format der Funktion 'grind' in die Ausgabedatei geschrieben.
7474     Ansonsten wird das Format der Funktion 'string' f�r die Ausgabe
7475     genutzt.
7476
7477     'stringout(<filename>, [<m>, <n>])' schreibt die Werte aller
7478     Eingabemarken von <m> bis <n> in die Ausgabedatei.
7479     'stringout(<filename>, input)' schreibt alle Eingabemarken in die
7480     Ausgabedatei.  'stringout(<filename>, functions)' schreibt alle vom
7481     Nutzer definierten Funktionen, die in der Informationsliste
7482     'functions' enthalten sind, in die Ausgabedatei.
7483
7484     'stringout(<filename>, values)' schreibt alle benuzterdefinierten
7485     Variablen, die in der Informationsliste 'values' enthalten sind, in
7486     die Ausgabedatei.  Die Variablen werden als eine Zuweisung, mit dem
7487     Namen der Variablen, dem Zuweisungsoperator ':' und dem Wert in die
7488     Datei geschrieben.  Im Unterschied dazu, speichert die allgemeine
7489     Form der Funktion 'stringout' die Variablen nicht als Zuweisung.
7490
7491 -- Funktion: with_stdout (<f>, <expr_1>, <expr_2>, <expr_3>, ...)
7492 -- Funktion: with_stdout (<s>, <expr_1>, <expr_2>, <expr_3>, ...)
7493
7494     'with_stdout' wertet Argumente <expr_1>, <expr_2>, <expr_3>, ...
7495     aus und schreibt die Ergebnisse der Auswertung in die Ausgabedatei
7496     'f' oder in den Stream 's'.  Die Ergebnisse werden nicht auf der
7497     Konsole ausgegeben.
7498
7499     Die Optionsvariable 'file_output_append' bestimmt, ob 'with_stdout'
7500     die Daten an die Ausgabedatei anh�ngt oder die Ausgabedatei zuvor
7501     l�scht.  Hat 'file_output_append' den Wert 'true', werden die Daten
7502     angeh�ngt.  Ansonsten wird die Datei gel�scht und neu angelegt.
7503     Existiert die Ausgabedatei noch nicht, wird diese angelegt.
7504
7505     'with_stout' gibt das Ergebnis des letzten Argumentes zur�ck.
7506
7507     Siehe auch 'writefile'.
7508
7509     Beispiel:
7510
7511          (%i1) with_stdout ("tmp.out", for i:5 thru 10 do
7512                   print (i, "! yields", i!))$
7513          (%i2) printfile ("tmp.out")$
7514          5 ! yields 120
7515          6 ! yields 720
7516          7 ! yields 5040
7517          8 ! yields 40320
7518          9 ! yields 362880
7519          10 ! yields 3628800
7520
7521 -- Funktion: writefile (<filename>)
7522
7523     Startet eine Aufzeichnung aller Ein- und Ausgaben der Konsole.  Die
7524     Ein- und Ausgaben werden in die Datei <filename> geschrieben.
7525
7526     Die Ausgabedatei kann von Maxima nicht wieder zur�ckgelesen werden.
7527     Um ein Datei zu erzeugen, die von Maxima zur�ckgelesen werden kann,
7528     siehe die Funktionen 'save' und 'stringout'.  'save' speichert
7529     Ausdr�cke in einem Lisp-Format und 'stringout' in einem
7530     Maxima-Format.
7531
7532     Die Reaktion der Funktion 'writefile' f�r den Fall, dass die
7533     Ausgabedatei bereits existiert, h�ngt von der Lisp-Implementation
7534     ab.  Die Ausgabedatei kann zur�ckgesetzt werden oder die Daten
7535     werden angeh�ngt.  Die Funktion 'appendfile' h�ngt die Daten immer
7536     an eine existierende Datei an.
7537
7538     Um eine Aufzeichnung ohne Textausgaben von Funktionen zu erhalten,
7539     kann 'writefile' nach der Ausf�hrung von 'playback' ausgef�hrt
7540     werden.  'playback' gibt alle vorhergenden Eingabe- und
7541     Ausgabemarken aus, jedoch nicht sonstige Textausgaben von
7542     Maxima-Funktionen.
7543
7544     Mit 'closefile' wird die Aufzeichnung beendet.
7545
7546