1 @c -----------------------------------------------------------------------------
2 @c File : Database.de.texi
3 @c License : GNU General Public License (GPL)
5 @c Original : Database.texi revision 15.06.2011
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 20.08.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
14 * Einf@"uhrung in Maximas Datenbank::
15 * Funktionen und Variablen f@"ur Eigenschaften::
16 * Funktionen und Variablen f@"ur Fakten::
17 * Funktionen und Variablen f@"ur Aussagen::
20 @c -----------------------------------------------------------------------------
21 @node Einf@"uhrung in Maximas Datenbank, Funktionen und Variablen f@"ur Eigenschaften, Maximas Datenbank, Maximas Datenbank
22 @section Einf@"uhrung in Maximas Datenbank
23 @c -----------------------------------------------------------------------------
25 @subheading Eigenschaften
27 Variablen und Funktionen k@"onnen mit der Funktion @mref{declare} Eigenschaften
28 zugewiesen werden. Diese Eigenschaften werden in eine Datenbank abgelegt oder
29 in eine von Lisp bereitgestellte Eigenschaftsliste eingetragen. Mit der
30 Funktion @mref{featurep} kann gepr@"uft werden, ob ein Symbol eine bestimmte
31 Eigenschaft hat und mit der Funktion @mref{properties} k@"onnen alle
32 Eigenschaften eines Symbols angezeigt werden. Die Funktion @mref{remove}@w{}
33 l@"oscht Eigenschaften aus der Datenbank oder von der Eigenschaftsliste. Wird
34 mit der Funktion @mref{kill} ein Symbol entfernt, werden auch die zugewiesenen
35 Eigenschaften gel@"oscht.
37 Weiterhin k@"onnen mit den Funktionen @mref{put} und @mref{qput} beliebige
38 vom Nutzer vorgesehene Eigenschaften in die Eigenschaftsliste zu einem Symbol
39 abgelegt werden. Mit der Funktion @mref{get} werden die Eigenschaften von
40 der Eigenschaftsliste gelesen und mit der Funktion @mref{rem} gel@"oscht.
42 Variablen k@"onnen die folgenden Eigenschaften erhalten, die in die Datenbank
50 real imaginary complex
53 Funktionen k@"onnen die folgenden Eigenschaften erhalten, die in die Datenbank
61 Die folgenden Eigenschaften k@"onnen f@"ur Funktionen definiert werden und
62 wirken sich auf die Vereinfachung dieser Funktionen aus. Diese Eigenschaften
63 werden in @ref{Vereinfachung} beschrieben.
66 linear additive multiplicative
67 outative commutative symmetric
68 antisymmetric nary lassociativ
69 rassociative evenfun oddfun
72 Weitere Eigenschaften, die Variablen und Funktionen erhalten k@"onnen, und
73 die in die Lisp-Eigenschaftsliste des Symbols abgelegt werden, sind.
76 bindtest feature alphabetic
77 scalar nonscalar nonarray
82 Maxima verwaltet Kontexte, um Eigenschaften von Variablen und Funktionen sowie
83 Fakten abzulegen. Fakten werden mit der Funktion @mref{assume} definiert und
84 in dem aktuellen Kontext abgelegt. Mit @code{assume(a>10)} erh@"alt Maxima zum
85 Beispiel die Information, dass die Variable @code{a} gr@"o@ss{}er als @code{10}
86 ist. Mit der Funktion @mref{forget} werden Fakten aus der Datenbank entfernt.
87 Fragt Maxima den Nutzer nach Eigenschaften von Variablen, werden die Antworten
88 in einem Kontext abgelegt.
90 Ein Kontext hat einen Namen, mit dem auf diesen Bezug genommen werden kann.
91 Nach dem Starten von Maxima hat der aktuelle Kontext den Namen @code{initial}.
92 Es kann eine beliebige Anzahl weiterer Kontexte definiert werden. Diese
93 k@"onnen hierarchisch voneinander abh@"angen. So ist der Kontext @code{initial}
94 ein Unterkontext zum Kontext @code{global}. Die Fakten in einem
95 @"ubergeordneten Kontext sind in dem Unterkontext immer pr@"asent. Der Kontext
96 @code{global} enth@"alt zum Beispiel Fakten, die von Maxima initialisiert
97 werden, und zus@"atzlich zu den Fakten des Kontextes @code{initial} aktiv sind.
99 Kontexte k@"onnen eine beliege Anzahl an Fakten aufnehmen. Sie k@"onnen mit der
100 Funktion @mref{deactivate} deaktiviert werden, ohne dass die Fakten verloren
101 gehen und sp@"ater mit der Funktion @mref{activate} aktiviert werden, wodurch
102 die Fakten f@"ur Aussagefunktionen wieder zur Verf@"ugung stehen.
104 @c -----------------------------------------------------------------------------
105 @node Funktionen und Variablen f@"ur Eigenschaften, Funktionen und Variablen f@"ur Fakten, Einf@"uhrung in Maximas Datenbank, Maximas Datenbank
106 @section Funktionen und Variablen f@"ur Eigenschaften
107 @c -----------------------------------------------------------------------------
109 @c --- 22.10.2010 DK -----------------------------------------------------------
111 @defvr {Eigenschaft} alphabetic
113 Das Kommando @code{declare(string, alphabetic)} deklariert die Zeichen der
114 Zeichenkette @var{string} als alphabetisch. Das Argument @var{string} muss eine
115 Zeichenkette sein. Zeichen, die als alphabetisch deklariert sind, k@"onnen in
116 Maxima-Bezeichnern verwendet werden. Siehe auch @ref{Bezeichner}.
120 Die Zeichen @code{"~"}, @code{"@@"} und @code{`} als alphabetisch erkl@"art.
123 (%i1) xx\~yy\`\@@ : 1729;
125 (%i2) declare ("~`@@", alphabetic);
127 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
128 (%o3) `xx@@@@yy~ + @@yy`xx + 1729
129 (%i4) listofvars (%);
130 (%o4) [@@yy`xx, `xx@@@@yy~]
134 @c --- 22.10.2010 DK -----------------------------------------------------------
136 @defvr {Eigenschaft} bindtest
138 Hat ein Symbol @var{x} die Eigenschaft @code{bindtest} und wird es ausgewertet,
139 ohne das dem Symbol bisher ein Wert zugewiesen wurde, signalisiert Maxima einen
140 Fehler. Siehe auch die Funktion @mrefdot{declare}
147 (%i2) declare (aa, bindtest);
151 -- an error. Quitting. To debug this try debugmode(true);
159 @c --- 22.10.2010 DK -----------------------------------------------------------
161 @defvr {Eigenschaft} constant
163 Das Kommando @code{declare(@var{a}, constant)} deklariert ein Symbol @var{a}
164 als konstant. Die Funktion @mref{constantp} hat f@"ur dieses Symbol dann das
165 Ergebnis @code{true}. Die Deklaration als eine Konstante verhindert nicht, dass
166 dem Symbol ein Wert zugewiesen werden kann. Siehe @mref{declare} und
172 (%i1) declare(c, constant);
183 @c --- 22.10.2010 DK -----------------------------------------------------------
185 @deffn {Funktion} constantp (@var{expr})
187 Gibt f@"ur einen konstanten Ausdruck @var{expr} den Wert @code{true} zur@"uck,
188 andernfalls @code{false}.
190 Ein Ausdruck wird von Maxima als ein konstanter Ausdruck erkannt, wenn seine
191 Argumente Zahlen sind (einschlie@ss{}lich von Zahlen in einer CRE-Darstellung),
192 symbolische Konstanten wie @code{%pi}, @code{%e} und @code{%i},
193 Variablen, die einen konstanten Wert haben, Variablen, die mit
194 @code{declare} als konstant deklariert sind, oder Funktionen, deren Argumente
197 Die Funktion @code{constantp} wertet das Argument aus.
199 Siehe auch die Eigenschaft @mrefdot{constant}
204 (%i1) constantp (7 * sin(2));
206 (%i2) constantp (rat (17/29));
208 (%i3) constantp (%pi * sin(%e));
210 (%i4) constantp (exp (x));
212 (%i5) declare (x, constant);
214 (%i6) constantp (exp (x));
216 (%i7) constantp (foo (x) + bar (%e) + baz (2));
222 @c --- 22.10.2010 DK -----------------------------------------------------------
224 @deffn {Funktion} declare (@var{a_1}, @var{p_1}, @var{a_2}, @var{p_2}, @dots{})
226 Weist dem Symbol @var{a_i} die Eigenschaft @var{p_i} zu. Die Argumente
227 @var{a_i} und @var{p_i} k@"onnen Listen sein. Ist @var{a_i} eine Liste, dann
228 erh@"alt jedes Symbol der Liste die Eigenschaft @var{p_i}. Ist umgekehrt
229 @var{p_i} eine Liste mit Eigenschaften, dann erh@"alt das Symbol @var{a_i}
230 diese Eigenschaften. Entsprechend erhalten alle Symbole einer Liste @var{a_i}
231 die Eigenschaften einer Liste @var{p_i}.
233 Die Funktion @code{declare} wertet die Argumente nicht aus. @code{declare} gibt
234 stets @code{done} als Ergebnis zur@"uck.
236 Hat ein Symbol @var{sym} die Eigenschaft @var{prop} mit der Funktion
237 @code{declare} erhalten, dann hat das Kommando @code{featurep(@var{sym},
238 @var{prop})} das Ergebnis @code{true}. Mit der Funktion @code{properties}
239 k@"onnen alle Eigenschaften eines Symbols angezeigt werden.
241 Mit der Funktion @code{declare} k@"onnen Symbole die folgenden Eigenschaften
246 Hat eine Funktion @code{f} die Eigenschaft @code{additive}, wird ein Ausdruck
247 der Form @code{f(x + y + z + ...)} zu @code{f(x) + f(y) + f(z) + ...}
248 vereinfacht. Siehe @mrefdot{additive}
251 @var{a_i} ist eine Zeichenkette, deren Zeichen als alphabetische Zeichen
252 deklariert werden. Die Zeichen k@"onnen dann in Maxima-Bezeichnern verwendet
253 werden. Siehe @mref{alphabetic} f@"ur Beispiele.
255 @item antisymmetric, commutative, symmetric
256 @var{a_i} wird als eine symmetrische, antisymmetrische oder kommutative Funktion
257 interpretiert. Die Eigenschaften @code{commutative} und @code{symmetric} sind
258 @"aquivalent. Siehe @mrefcomma{antisymmetric} @mref{commutative} und
262 Hat ein Symbol die Eigenschaft @code{bindtest} und wird es ausgewertet, ohne
263 das dem Symbol bisher ein Wert zugewiesen wurde, signalisiert Maxima einen
264 Fehler. Siehe @mref{bindtest} f@"ur Beispiele.
267 Hat ein Symbol die Eigenschaft @code{constant}, wird es von Maxima als eine
268 Konstante interpretiert. Siehe auch @mrefdot{constant}
271 Erh@"alt eine Variable die Eigenschaft @code{even} oder @code{odd}, wird sie als
272 gerade oder ungerade interpretiert.
274 @item evenfun, oddfun
275 Erh@"alt eine Funktion oder ein Operator die Eigenschaft @code{evenfun} oder
276 @code{oddfun} wird die Funktion oder der Operator von Maxima als gerade und
277 ungerade interpretiert. Diese Eigenschaft wird bei der Vereinfachung von
278 Ausdr@"ucken von Maxima angewendet. Siehe @mref{evenfun} und @mrefdot{oddfun}
281 Deklariert die Variable @code{a_i} als einen Auswertungsschalter. W@"ahrend der
282 Auswertung eines Ausdrucks mit der Funktion @code{ev}, erh@"alt der
283 Auswertungsschalter @code{a_i} den Wert @code{true}. Siehe @mref{evflag} f@"ur
287 Deklariert eine Funktion @var{a_i} als eine Auswertungsfunktion. Tritt die
288 Funktion @var{a_i} als Argument der Funktion @code{ev} auf, so wird die Funktion
289 auf den Ausdruck angewendet. Siehe @mref{evfun} f@"ur Beispiele.
292 @var{a_i} wird als eine Eigenschaft @code{feature} interpretiert. Andere
293 Symbole k@"onnen dann diese vom Nutzer definierte Eigenschaft erhalten.
294 Siehe @mrefdot{feature}
296 @item increasing, decreasing
297 Erh@"alt eine Funktion die Eigenschaft @code{decreasing} oder @code{increasing},
298 wird die Funktion als eine monoton steigende oder fallende Funktion
299 interpretiert. Siehe @mref{decreasing} und @mrefdot{increasing}
301 @item integer, noninteger
302 @var{a_i} wird als eine ganzzahlige oder nicht-ganzzahlige Variable
303 interpretiert. Siehe @mref{integer} und @mrefdot{noninteger}
306 Erh@"alt eine Funktion die Eigenschaft @code{integervalued}, nimmt Maxima f@"ur
307 Vereinfachungen an, dass die Funktionen einen ganzzahligen Wertebereich hat.
308 F@"ur ein Beispiel siehe @mrefdot{integervalued}
310 @item lassociative, rassociative
311 @var{a_i} wird als eine rechts- oder links-assoziative Funktion interpretiert.
312 Siehe @mref{lassociative} und @mrefdot{rassociative}
315 Entspricht der Deklaration einer Funktion als @code{outative} und
316 @code{additive}. Siehe auch @mrefdot{linear}
319 Wird eine Variable als @var{mainvar} deklariert, wird sie als eine
320 "Hauptvariable" interpretiert. Eine Hauptvariable wird vor allen Konstanten und
321 Variablen in einer kanonischen Ordnung eines Maxima-Ausdr@"uckes angeordnet.
322 Die Anordnung wird durch die Funktion @code{ordergreatp} bestimmt. Siehe auch
326 Hat eine Funktion @code{f} die Eigenschaft @code{multiplicative}, werden
327 Ausdr@"ucke der Form @code{@var{a_i}(x * y * z * ...)} zu
328 @code{@var{a_i}(x) * @var{a_i}(y) * @var{a_i}(z) * ...} vereinfacht. Die
329 Vereinfachung wird nur f@"ur das erste Argument der Funktion @var{f}
330 ausgef@"uhrt. Siehe @mrefdot{multiplicative}
333 Erh@"alt eine Funktion oder ein Operator die Eigenschaft @code{nary}, wird die
334 Funktion oder der Operator bei der Vereinfachung als Nary-Funktion oder
335 Nary-Operator interpretiert. Verschachtelte Ausdr@"ucke wie
336 @code{foo(x, foo(y, z))} werden zum Beispiel zu @code{foo(x, y, z)} vereinfacht.
337 Die Deklaration @code{nary} unterscheidet sich von der Funktion @code{nary}.
338 W@"ahrend der Funktionsaufruf einen neuen Operator definiert, wirkt sich die
339 Deklaration nur auf die Vereinfachung aus. Siehe auch
340 @mxrefdot{property_nary, nary}
343 Hat ein Symbol @var{a_i} die Eigenschaft @code{nonarray}, wird es nicht als ein
344 Array interpretiert, wenn das Symbol einen Index erh@"alt. Diese Deklaration
345 verhindert die mehrfache Auswertung, wenn @var{a_i} als indizierte Variable
346 genutzt wird. Siehe @mrefdot{nonarray}
349 @var{a_i} wird als eine nicht-skalare Variable interpretiert. Ein Symbol wird
350 also als ein Vektor oder eine Matrix deklariert. Siehe @mrefdot{nonscalar}
353 @var{a_i} wird als Substantivform interpretiert. Abh@"angig vom Kontext wird
354 @var{a_i} durch @code{'@var{a_i}} oder @code{nounify(@var{a_i})} ersetzt.
355 Siehe auch @mrefdot{noun} f@"ur ein Beispiel.
358 Ausdr@"ucke mit der Funktion @var{a_i} werden so vereinfacht, dass konstante
359 Faktoren aus dem Argument herausgezogen werden. Hat die Funktion @var{a_i} ein
360 Argument, wird ein Faktor dann als konstant angesehen, wenn er ein Symbol oder
361 eine deklarierte Konstante ist. Hat die Funktion @var{a_i} zwei oder mehr
362 Argumente, wird ein Faktor dann als konstant angesehen, wenn das zweite Argument
363 ein Symbol und der Faktor unabh@"angig vom zweiten Argument ist. Siehe auch
367 @var{a_i} wird als eine Funktion interpretiert, die nur positive Werte hat.
368 Siehe @mrefdot{posfun}
370 @item rational, irrational
371 @var{a_i} wird als eine rationale oder irrationale Zahl interpretiert. Siehe
372 @mref{rational} und @mrefdot{irrational}
374 @item real, imaginary, complex
375 @var{a_i} wird als eine reelle, imagin@"are oder komplexe Zahl interpretiert.
376 Siehe @mrefcomma{real} @mref{imaginary} und @mrefdot{complex}
379 @var{a_i} wird als skalare Variable interpretiert. Siehe @mrefdot{scalar}
383 @c --- 06.02.2011 DK -----------------------------------------------------------
386 @defvr {Eigenschaft} decreasing
387 @defvrx {Eigenschaft} increasing
389 Erh@"alt eine Funktion mit der Funktion @mref{declare} die Eigenschaft
390 @code{decreasing} oder @code{increasing} wird die Funktion als eine steigende
391 oder fallende Funktion interpretiert.
398 (%i2) is(f(a) > f(b));
400 (%i3) declare(f, increasing);
402 (%i4) is(f(a) > f(b));
407 @c --- 06.02.2011 DK -----------------------------------------------------------
410 @defvr {Eigenschaften} even
411 @defvrx {Eigenschaften} odd
413 Hat eine Variable mit der Funktion @mref{declare} die Eigenschaft @code{even}
414 oder @code{odd} erhalten, wird sie von Maxima als gerade oder ungerade
415 ganze Zahl interpretiert. Diese Eigenschaften werden jedoch nicht von den
416 Funktionen @mrefcomma{evenp} @mref{oddp} oder @mref{integerp} erkannt.
418 Siehe auch die Funktion @mrefdot{askinteger}
423 (%i1) declare(n, even);
425 (%i2) askinteger(n, even);
434 @c --- 22.10.2010 DK -----------------------------------------------------------
436 @defvr {Eigenschaft} feature
438 @code{feature} ist eine Eigenschaft, die ein Symbol @var{sym} mit der Funktion
439 @code{declare} erhalten kann. In diesem Fall ist das Symbol @var{sym} selbst
440 eine Eigenschaft, so dass das Kommando @code{declare(x, sym)} einem Symbol
441 @var{x} die vom Nutzer definierte Eigenschaft @code{sym} gibt.
443 Maxima unterscheidet Systemeigenschaften und mathematische Eigenschaften, die
444 Symbole und Ausdr@"ucke haben k@"onnen. F@"ur Systemeigenschaften siehe die
445 Funktion @mrefdot{status} F@"ur mathematische Eigenschaften siehe die
446 Funktionen @mref{declare} und @mrefdot{featurep}
451 (%i1) declare (FOO, feature);
453 (%i2) declare (x, FOO);
455 (%i3) featurep (x, FOO);
460 @c --- 22.10.2010 DK -----------------------------------------------------------
462 @deffn {Funktion} featurep (@var{a}, @var{p})
464 Stellt fest, ob das Symbol oder der Ausdruck @var{a} die Eigenschaft @var{p}
465 hat. Maxima nutzt die Fakten der aktiven Kontexte und die definierten
466 Eigenschaften f@"ur Symbole und Funktionen.
468 @code{featurep} gibt sowohl f@"ur den Fall @code{false} zur@"uck, dass das
469 Argument @var{a} nicht die Eigenschaft @var{p} hat, als auch f@"ur den Fall,
470 dass Maxima dies nicht anhand der bekannten Fakten und Eigenschaften entscheiden
473 @code{featurep} wertet die Argumente aus.
475 Siehe auch @mref{declare} und @mrefdot{featurep}.
480 (%i1) declare (j, even)$
481 (%i2) featurep (j, integer);
486 @c --- 22.10.2010 DK -----------------------------------------------------------
488 @defvr {Systemvariable} features
490 Maxima kennt spezielle mathematische Eigenschaften von Funktionen und
493 @code{declare(@var{x})}, @var{foo} gibt der Funktion oder Variablen @var{x} die
494 Eigenschaft @var{foo}.
496 @code{declare(@var{foo}, feature)} deklariert die neue Eigenschaft @var{foo}.
497 Zum Beispiel deklariert @code{declare([red, green, blue], feature)} die drei
498 neuen Eigenschaften @code{red}, @code{green} und @code{blue}.
500 @code{featurep(@var{x}, @var{foo})} hat die R@"uckgabe @code{true}, wenn @var{x}
501 die Eigenschaft @var{foo} hat. Ansonsten wird @code{false} zur@"uckgegeben.
503 Die Informationsliste @code{features} enth@"alt eine Liste der Eigenschaften,
504 die Funktionen und Variablen erhalten k@"onnen und die in die Datenbank
508 integer noninteger even
509 odd rational irrational
510 real imaginary complex
511 analytic increasing decreasing
512 oddfun evenfun posfun
513 commutative lassociative rassociative
514 symmetric antisymmetric
517 Hinzu kommen die vom Nutzer definierten Eigenschaften.
519 @code{features} ist eine Liste der mathematischen Eigenschaften. Es gibt
520 weitere Eigenschaften. Siehe @mref{declare} und @mrefdot{status}
523 @c --- 16.11.2010 DK -----------------------------------------------------------
525 @deffn {Funktion} get (@var{a}, @var{i})
527 Gibt die Eigenschaft @var{i} des Symbols @var{a} zur@"uck. Hat das Symbol
528 @var{a} nicht die Eigenschaft @var{i}, wird @code{false} zur@"uckgegeben.
530 @code{get} wertet die Argumente aus.
535 (%i1) put (%e, 'transcendental, 'type);
537 (%i2) put (%pi, 'transcendental, 'type)$
538 (%i3) put (%i, 'algebraic, 'type)$
539 (%i4) typeof (expr) := block ([q],
541 then return ('algebraic),
543 then return (maplist ('typeof, expr)),
544 q: get (expr, 'type),
546 then errcatch (error(expr,"is not numeric.")) else q)$
547 (%i5) typeof (2*%e + x*%pi);
549 (%o5) [[transcendental, []], [algebraic, transcendental]]
550 (%i6) typeof (2*%e + %pi);
551 (%o6) [transcendental, [algebraic, transcendental]]
555 @c --- 06.02.2011 DK -----------------------------------------------------------
558 @defvr {Eigenschaften} integer
559 @defvrx {Eigenschaften} noninteger
561 Hat eine Variable mit der Funktion @mref{declare} die Eigenschaft @code{integer}
562 oder @code{noninteger} erhalten, wird sie von Maxima als eine ganze Zahl oder
563 als nicht-ganze Zahl interpretiert. Siehe auch @mrefdot{askinteger}
568 (%i1) declare(n, integer, x, noninteger);
577 @c --- 06.02.2011 DK -----------------------------------------------------------
578 @anchor{integervalued}
579 @defvr {Eigenschaft} integervalued
581 Erh@"alt eine Funktion mit @mref{declare} die Eigenschaft @code{integervalued},
582 nimmt Maxima f@"ur Vereinfachungen an, dass der Wertebereich der Funktion
591 (%i2) declare(f, integervalued);
599 @c --- 22.11.2010 DK -----------------------------------------------------------
601 @deffn {Eigenschaft} nonarray
603 @code{declare(a, nonarray)} gibt dem Symbol @var{a} die Eigenschaft nicht ein
604 Array zu sein. Dies verhindert die mehrfache Auswertung, wenn das Symbol
605 @var{a} als indizierte Variable genutzt wird.
610 (%i1) a:'b$ b:'c$ c:'d$
615 (%i5) declare(a, nonarray);
623 @c --- 22.10.2010 DK -----------------------------------------------------------
625 @defvr {Eigenschaft} nonscalar
627 Hat ein Symbol die Eigenschaft @code{nonscalar}, verh@"alt es sich wie eine
628 Matrix oder Liste bei nicht-kommutativen Rechenoperationen.
631 @c --- 22.10.2010 DK -----------------------------------------------------------
633 @deffn {Funktion} nonscalarp (@var{expr})
635 Gibt @code{true} zur@"uck, wenn der Ausdruck @var{expr} kein Skalar ist. Der
636 Ausdruck enth@"alt dann Matrizen, Listen oder Symbole, die als @code{nonscalar}
640 @c --- 22.10.2010 DK -----------------------------------------------------------
642 @defvr {Eigenschaft} posfun
644 @code{declare(f, posfun)} deklariert die Funktion @code{f} als eine Funktion,
645 die nur positive Werte annimmt. @code{is(f(x) > 0)} gibt dann @code{true}
649 @c --- 27.05.2011 DK -----------------------------------------------------------
651 @deffn {Funktion} printprops (@var{a}, @var{i})
652 @deffnx {Funktion} printprops ([@var{a_1}, @dots{}, @var{a_n}], @var{i})
653 @deffnx {Funktion} printprops (all, @var{i})
655 Zeigt die zum Kennzeichen @var{i} zugeordnete Eigenschaft des Atoms @var{a} an.
656 @var{i} kann einer der Werte @code{gradef}, @code{atvalue}, @code{atomgrad} oder
657 @code{matchdeclare} sein. @var{a} kann sowohl eine Liste von Atomen, als auch
658 das Atom @code{all} sein. In diesem Fall werden alle Atome angezeigt, die eine
659 Eigenschaft zum Kennzeichen @var{i} haben.
664 (%i1) gradef(f(x), 2*g(x));
666 (%i2) printprops(f,gradef);
675 @c --- 20.08.2011 DK -----------------------------------------------------------
677 @deffn {Funktion} properties (@var{a})
679 Gibt eine Liste mit den Eigenschaften zur@"uck, die das Symbol @var{a} von
680 Maxima oder dem Nutzer erhalten hat. Die R@"uckgabe kann jede Eigenschaft
681 enthalten, die mit der Funktion @mref{declare} einem Symbol zugewiesen ist.
682 Diese Eigenschaften sind:
685 linear additive multiplicative
686 outative commutative symmetric
687 antisymmetric nary lassociativ
688 rassociative evenfun oddfun
689 bindtest feature alphabetic
690 scalar nonscalar nonarray
691 constant integer noninteger
693 irrational real imaginary
694 complex increasing decreasing
698 Die folgenden Eintr@"age beschreiben Eigenschaften, die Variablen haben
703 Der Variable ist mit dem Operatoren @mref{:} oder @mref{::} ein Wert zugewiesen.
705 Die Variable ist eine Optionsvariable oder Systemvariable, die von Maxima
708 Die Variable hat einen numerischen Wert auf der Eigenschaftsliste, der mit
709 der Funktion @mref{numerval} zugewiesen ist.
710 @item assign property
711 Die Variable hat eine eine Funktion auf der Eigenschaftsliste, die die Zuweisung
712 eines Wertes kontrolliert.
715 Eintr@"age, die die Eigenschaften von Funktionen beschreiben:
719 Eine mit dem Operator @mref{:=} oder der Funktion @mref{define} definierte
722 Eine mit dem Operator @mref{::=} definierte Makrofunktion.
723 @item system function
724 Ein interne Maxima-Funktion.
725 @item special evaluation form
726 Eine Maxima-Spezialform, die die Argumente nicht auswertet.
728 Wird eine Nutzerfunktion mit @mref{translate} @"ubersetzt oder mit der Funktion
729 @mref{compile} kompiliert, erh@"alt sie die Eigenschaft @code{transfun}.
730 Interne Maxima-Funktionen, die mit dem Lisp-Makro @code{defmfun} definiert
731 werden, haben ebenfalls diese Eigenschaft.
733 F@"ur die Funktion ist eine Taylorreihenentwicklung definiert.
735 Die Funktion hat eine Ableitung.
737 Die Funktion hat eine Stammfunktion.
738 @item distribute over bags
739 Ist das Argument der Funktion eine Liste, Matrix oder Gleichung so wird die
740 Funktion auf die Elemente oder beide Seiten der Gleichung angewendet.
742 Es existiert eine Funktion f@"ur die Behandlung spezieller Grenzwerte.
743 @item conjugate function
744 Es existiert eine Funktion, um die konjugiert komplexe Funktion f@"ur spezielle
745 Wertebereiche zu ermitteln.
746 @item mirror symmetry
747 Die Funktion hat die Eigenschaft der Spiegelsymmetrie.
748 @item complex characteristic
749 Es existiert eine Funktion, um den Realteil und den Imagin@"arteil der Funktion
750 f@"ur spezielle Wertebereiche zu ermitteln.
751 @item user autoload function
752 Die Funktion wird automatisch beim ersten Aufruf aus einer Datei geladen. Der
753 Nutzer kann mit dem Funktion @mref{setup_autoload} eine solche Funktion
757 Weitere Eigenschaften, die Symbole erhalten k@"onnen:
761 Das Symbol ist ein Maxima-Operator oder ein nutzerdefinierte Operator.
764 Die Funktion oder der Operator haben eine Regel f@"ur die Vereinfachung.
769 Das Symbol hat Eintr@"age in Maximas Datenbank.
771 @item hashed array, declared array, complete array
772 Ein Hashed-Array, ein deklariertes Array oder ein Array dessen Elemente
773 einen bestimmten Typ haben.
776 Eine Array-Funktion die mit dem Operator @mref{:=} definiert ist.
779 Dem Symbol ist mit der Funktion @mref{atvalue} ein Wert an einer Stelle
783 F@"ur das Symbol ist mit der Funktion @mref{gradef} eine Ableitung definiert.
786 F@"ur das Symbol ist eine Abh@"angigkeit mit der Funktion @mref{depends}
790 Das Symbol ist eine mit @mref{matchdeclare} definierte Mustervariable, der eine
791 Aussagefunktion zugeordnet ist.
794 F@"ur das Symbol ist mit der Funktion @mref{mode_declare} ein Typ definiert.
796 @item user properties
799 Das Symbol bezeichnet einen Kontext.
802 Das Symbol bezeichnet einen aktiven Kontextes.
806 @c --- 20.08.2011 DK -----------------------------------------------------------
808 @defvr {Systemvariable} props
809 Standardwert: @code{[]}
811 @code{props} ist eine Liste der Symbole, die vom Nutzer eine Eigenschaft
812 erhalten haben, die in die Lisp-Eigenschaftsliste des Symbols eingetragen wird.
813 Neben den Funktionen @mref{put} und @mrefcomma{qput} mit denen der Nutzer
814 direkt eine Eigenschaft zu einem Symbol in die Lisp-Eigenschaftsliste eintragen
815 kann, legen auch Maxima-Funktionen Eigenschaften zu Symbolen in der
816 Eigenschaftsliste ab und tragen diese Symbole in die Systemvariable @code{props}
817 ein. Zu diesen Funktionen geh@"oren zum Beispiel @mrefcomma{declare}@w{}
818 @mrefcomma{numerval} @mrefcomma{matchdeclare} @mrefcomma{mode_declare}@w{}
819 @mref{gradef} oder @mrefdot{setup_autoload}
821 Nach dem Start von Maxima sollte die Systemvariable @code{props} keine Symbole
822 enthalten. Das ist jedoch nicht der Fall und kann als ein Fehler betrachtet
823 werden, der in Zukunft zu beheben ist.
826 @c --- 29.12.2010 DK -----------------------------------------------------------
828 @deffn {Funktion} propvars (@var{prop})
830 Gibt eine Liste mit den Atomen zur@"uck, die in der Informationsliste
831 @code{props} eingetragen sind und die die Eigenschaft @var{prop} haben. Zum
832 Beispiel gibt @code{propvars(atvalue)} eine Liste der Atome zur@"uck, die die
833 Eigenschaft @code{atvalue} haben.
836 @c --- 29.12.2010 DK -----------------------------------------------------------
838 @deffn {Funktion} put (@var{atom}, @var{value}, @var{indicator})
840 Weist den Wert @var{value} der Eigenschaft @var{indicator} des Atoms @var{atom}
841 zu. @var{indicator} kann eine beliebige Eigenschaft sein und beschr@"ankt sich
842 nicht auf die vom System definierten Eigenschaften. @code{put} wertet die
843 Argumente aus. @code{put} gibt @var{value} zur@"uck.
848 (%i1) put (foo, (a+b)^5, expr);
851 (%i2) put (foo, "Hello", str);
853 (%i3) properties (foo);
854 (%o3) [[user properties, str, expr]]
855 (%i4) get (foo, expr);
860 (%i5) get (foo, str);
865 @c --- 29.12.2010 DK -----------------------------------------------------------
867 @deffn {Funktion} qput (@var{atom}, @var{value}, @var{indicator})
869 Entspricht der Funktion @code{put} mit dem Unterschied, dass @code{qput} die
870 Argumente nicht auswertet.
878 (%i4) put (foo, bar, baz);
880 (%i5) properties (aa);
881 (%o5) [[user properties, cc]]
884 (%i7) qput (foo, bar, baz);
886 (%i8) properties (foo);
887 (%o8) [value, [user properties, baz]]
888 (%i9) get ('foo, 'baz);
893 @c --- 06.02.2011 DK -----------------------------------------------------------
896 @defvr {Eigenschaft} rational
897 @defvrx {Eigenschaft} irrational
899 Hat eine Variable mit der Funktion @mref{declare} die Eigenschaft
900 @code{rational} oder @code{irrational} erhalten, wird sie von Maxima als eine
901 rationale Zahl oder als eine nicht rationale Zahl interpretiert.
904 @c --- 06.02.2011 DK -----------------------------------------------------------
908 @defvr {Eigenschaft} real
909 @defvrx {Eigenschaft} imaginary
910 @defvrx {Eigenschaft} complex
912 Hat eine Variable mit der Funktion @mref{declare} die Eigenschaft @code{real},
913 @code{imaginary} oder @code{complex} erhalten, wird sie von Maxima als eine
914 reelle Zahl, imagin@"are Zahl oder als eine komplexe Zahl interpretiert.
917 @c --- 03.01.2011 DK -----------------------------------------------------------
919 @deffn {Funktion} rem (@var{atom}, @var{indicator})
921 Entfernt die Eigenschaft @var{indicator} vom Atom @var{atom}.
924 @c --- 29.12.2010 DK -----------------------------------------------------------
926 @deffn {Funktion} remove (@var{a_1}, @var{p_1}, @dots{}, @var{a_n}, @var{p_n})
927 @deffnx {Funktion} remove ([@var{a_1}, @dots{}, @var{a_m}], [@var{p_1}, @dots{}, @var{p_n}], @dots{})
928 @deffnx {Funktion} remove ("@var{a}", operator)
929 @deffnx {Funktion} remove (@var{a}, transfun)
930 @deffnx {Funktion} remove (all, @var{p})
932 Entfernt Eigenschaften von Atomen.
934 @code{remove(@var{a_1}, @var{p_1}, ..., @var{a_n}, @var{p_n})} entfernt die
935 Eigenschaft @code{p_k} von dem Atom @code{a_k}.
937 @code{remove([@var{a_1}, ..., @var{a_m}], [@var{p_1}, ..., @var{p_n}], ...)}
938 entfernt die Eigenschaften @var{p_1}, @dots{}, @var{p_n} von den Atomen
939 @var{a_1}, @dots{}, @var{a_m}. Es k@"onnen mehrere Paare an Listen angegeben
942 @code{remove(all, @var{p})} entfernt die Eigenschaft @var{p} von allen Atomen,
943 die diese Eigenschaft aufweisen.
945 Die zu entfernenden Eigenschaften k@"onnen vom System definierte Eigenschaften
946 wie @code{function}, @code{macro}, @code{mode_declare} oder nutzerdefinierte
949 @code{remove("@var{a}", operator)} oder @code{remove("@var{a}", op)}
950 entfernen vom Atom @var{a} die Operatoreigenschaften, die mit den Funktionen
951 @mrefcomma{prefix} @mrefcomma{infix} @mrefcomma{nary} @mrefcomma{postfix}@w{}
952 @mref{matchfix} oder @mref{nofix} definiert wurden. Die Namen von Operatoren
953 m@"ussen als eine Zeichenkette angegeben werden.
955 @code{remove} gibt immer @code{done} zur@"uck.
958 @c --- 22.10.2010 DK -----------------------------------------------------------
960 @defvr {Eigenschaft} scalar
962 Hat ein Symbol die Eigenschaft @code{scalar}, verh@"alt es sich wie ein Skalar
963 bei nicht-kommutativen Rechenoperationen.
966 @c --- 29.12.2010 DK -----------------------------------------------------------
968 @deffn {Funktion} scalarp (@var{expr})
970 Gibt @code{true} zur@"uck, wenn der Ausdruck @var{expr} eine Zahl, Konstante,
971 ein als Skalar definiertes Symbol oder ein aus diesen Objekten zusammengesetzter
972 Ausdruck ist. Der Ausdruck darf jedoch keine Liste oder eine Matrix sein.
975 @c -----------------------------------------------------------------------------
976 @node Funktionen und Variablen f@"ur Fakten, Funktionen und Variablen f@"ur Aussagen, Funktionen und Variablen f@"ur Eigenschaften, Maximas Datenbank
977 @section Funktionen und Variablen f@"ur Fakten
978 @c -----------------------------------------------------------------------------
980 @c --- 12.02.2011 DK -----------------------------------------------------------
982 @deffn {Funktion} activate (@var{context_1}, @dots{}, @var{context_n})
984 Das Kommando @code{activate(@var{context})} aktiviert den Kontext @var{context}.
985 Der Funktion @code{activate} k@"onnen mehrere Kontexte @var{context_1}, @dots{},
986 @var{context_n} @"ubergeben werden. Nur die Aussagen und Fakten eines aktiven
987 Kontextes stehen f@"ur die Auswertung von Aussagen zur Verf@"ugung.
989 Maxima gibt @code{done} zur@"uck, wenn der Kontext erfolgreich aktiviert werden
990 konnte oder wenn der Kontext bereits aktiv ist. Wird versucht einen nicht
991 existierenden Kontext zu aktivieren, gibt Maxima eine Fehlermeldung aus.
993 Das Kommando @code{facts()} gibt die Fakten und Aussagen des aktuellen Kontextes
994 aus. Die Aussagen und Fakten anderer Kontexte k@"onnen zwar aktiv sein, sind
995 aber in der R@"uckgabe von @code{facts} nicht enthalten. Um die Aussagen und
996 Fakten eines anderen als des aktuellen Kontexts auszugeben, kann das Kommando
997 @code{facts(@var{context})} ausgef@"uhrt werden.
999 Die Systemvariable @mref{activecontexts} enth@"alt eine Liste der aktiven
1000 Kontexte. Siehe auch die Systemvariable @mref{contexts} f@"ur eine Liste
1001 aller Kontexte, die Maxima kennt.
1004 @c --- 27.08.2010 DK -----------------------------------------------------------
1005 @anchor{activecontexts}
1006 @defvr {Systemvariable} activecontexts
1007 Standardwert: @code{[]}
1009 Die Systemvariable @code{activecontexts} enth@"alt eine Liste der Kontexte, die
1010 mit der Funktion @code{activate} aktiviert wurden. Unterkontexte sind aktiv,
1011 ohne dass die Funktion @code{activate} aufgerufen werden muss und sind nicht in
1012 der Liste @code{activecontexts} enthalten. Siehe auch die Funktion
1013 @mref{activate} f@"ur die Aktivierung eines Kontextes und die Systemvariable
1014 @mref{contexts} f@"ur eine Liste aller vorhandenen Kontexte.
1017 @c --- 27.08.2010 DK -----------------------------------------------------------
1019 @deffn {Funktion} askinteger (@var{expr}, integer)
1020 @deffnx {Funktion} askinteger (@var{expr})
1021 @deffnx {Funktion} askinteger (@var{expr}, even)
1022 @deffnx {Funktion} askinteger (@var{expr}, odd)
1024 Das Kommando @code{askinteger(@var{expr}, integer)} versucht anhand der Aussagen
1025 und Fakten der aktiven Kontexte zu entscheiden, ob @var{expr} eine ganze Zahl
1026 repr@"asentiert. Kann @code{askinteger} die Frage nicht entscheiden, fragt
1027 Maxima den Nutzer. Die Antwort wird dem aktuellen Kontext hinzugef@"ugt.
1028 @code{askinteger(@var{expr})} ist @"aquivalent zu
1029 @code{askinteger(@var{expr}, integer)}.
1031 @code{askinteger(@var{expr}, even)} und @code{askinteger(@var{expr}, odd)}
1032 versuchen zu entscheiden, ob @var{expr} eine gerade oder ungerade ganze Zahl
1033 repr@"asentiert. Kann Maxima dies nicht entscheiden, wird der Nutzer gefragt.
1034 Die Antwort wird dem aktuellen Kontext hinzugef@"ugt.
1039 (%i1) askinteger(n,integer);
1043 (%i2) askinteger(e,even);
1044 Is e an even number?
1048 (%o3) [kind(n, integer), kind(e, even)]
1049 (%i4) declare(f,integervalued);
1051 (%i5) askinteger(f(x));
1056 @c --- 27.08.2010 DK -----------------------------------------------------------
1058 @deffn {Funktion} asksign (@var{expr})
1060 Die Funktion @code{asksign} versucht zu entscheiden, ob der Ausdruck @var{expr}
1061 einen positiven, negativen oder den Wert Null repr@"asentiert. Kann Maxima dies
1062 nicht feststellen, wird der Nutzer nach weiteren Informationen gefragt, um die
1063 Frage zu entscheiden. Die Antworten des Nutzers werden f@"ur die laufende
1064 Auswertung dem aktuellen Kontext hinzugef@"ugt. Der R@"uckgabewert der
1065 Funktion @code{asksign} ist @code{pos}, @code{neg} oder @code{zero} f@"ur einen
1066 positiven, negativen oder den Wert Null.
1069 @c --- 26.08.2010 DK -----------------------------------------------------------
1071 @deffn {Funktion} assume (@var{pred_1}, @dots{}, @var{pred_n})
1073 F@"ugt die Aussagen @var{pred_1}, @dots{}, @var{pred_n} dem aktuellen Kontext
1074 hinzu. Eine inkonsistente oder redundante Aussage wird dem Kontext nicht
1075 hinzugef@"ugt. @code{assume} gibt eine Liste mit den Aussagen zur@"uck, die dem
1076 Kontext hinzugef@"ugt wurden, oder die Symbole @code{redunant} und
1077 @code{inconsistent}.
1079 Die Aussagen @var{pred_1}, @dots{}, @var{pred_n} k@"onnen nur Ausdr@"ucke mit
1080 den relationalen Operatoren @code{"<"}, @code{"<="}, @code{equal},
1081 @code{notequal}, @code{">="} und @code{">"} sein. Aussagen k@"onnen nicht die
1082 Operatoren @code{"="} f@"ur Gleichungen oder @code{"#"} f@"ur Ungleichungen
1083 enthalten. Auch k@"onnen keine Aussagefunktionen wie @code{integerp} verwendet
1086 Zusammengesetzte Aussagen mit dem Operator @code{and} der Form
1087 @code{@var{pred_1} and ... and @var{pred_n}} sind m@"oglich, nicht dagegen
1088 Aussagen mit dem Operator @code{or} der Form @code{@var{pred_1} or ... or
1089 @var{pred_n}}. Ein Ausdruck mit dem Operator @code{not} der Form
1090 @code{not(@var{pred_k})} ist dann m@"oglich, wenn @var{pred_k} eine
1091 relationale Aussage ist. Aussagen der Form @code{not (@var{pred_1} and
1092 @var{pred_2})} und @code{not (@var{pred_1} or @var{pred_2})} sind dagegen nicht
1095 Der Folgerungsmechanismus von Maxima ist nicht sehr stark. Viele
1096 Schlu@ss{}folgerungen k@"onnen von Maxima nicht abgeleitet werden. Dies ist
1097 eine bekannte Schw@"ache von Maxima.
1099 @code{assume} behandelt keine Aussagen mit komplexen Zahlen. Enth@"alt eine
1100 Aussage eine komplexe Zahl, gibt @code{assume} den Wert @code{inconsistent}
1101 oder @code{redunant} zur@"uck.
1103 @code{assume} wertet die Argumente aus.
1105 Siehe auch @mrefcomma{is} @mrefcomma{facts} @mrefcomma{forget}@w{}
1106 @mref{context} und @mrefdot{declare}
1111 (%i1) assume (xx > 0, yy < -1, zz >= 0);
1112 (%o1) [xx > 0, yy < - 1, zz >= 0]
1113 (%i2) assume (aa < bb and bb < cc);
1114 (%o2) [bb > aa, cc > bb]
1116 (%o3) [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
1119 (%i5) is (yy < -yy);
1121 (%i6) is (sinh (bb - aa) > 0);
1123 (%i7) forget (bb > aa);
1125 (%i8) prederror : false;
1127 (%i9) is (sinh (bb - aa) > 0);
1129 (%i10) is (bb^2 < cc^2);
1134 @c --- 12.02.2011 DK -----------------------------------------------------------
1135 @anchor{assumescalar}
1136 @defvr {Optionsvariable} assumescalar
1137 Standardwert: @code{true}
1139 Die Optionsvariable @code{assumescalar} kontrolliert, wie ein Ausdruck von den
1140 arithmetischen Operatoren @code{"+"}, @code{"*"}, @code{"^"}, @code{"."} und
1141 @code{"^^"} behandelt wird, wenn Maxima nicht ermitteln kann, ob der Ausdruck
1142 ein Skalar oder Nicht-Skalar ist. @code{assumescalar} hat drei m@"ogliche
1147 Unbekannte Ausdr@"ucke werden als ein Nicht-Skalar behandelt.
1150 Unbekannte Ausdr@"ucke werden als ein Skalar f@"ur die kommutativen
1151 arithmetischen Operatoren @code{"+"}, @code{"*"} und @code{"^"} behandelt.
1154 Unbekannte Ausdr@"ucke werden f@"ur alle arithmetischen Operatoren als ein
1158 Es ist besser Variablen als ein Skalar oder Nicht-Skalar mit der Funktion
1159 @mref{declare} zu deklarieren, anstatt die Vereinfachung mit der
1160 Optionsvariablen @code{assumescalar} zu kontrollieren. Siehe auch die
1161 Eigenschaften @mref{scalar} und @mref{nonscalar} sowie die Funktionen
1162 @mref{scalarp} und @mrefdot{nonscalarp}
1166 Maxima kann nicht ermitteln, ob das Symbol @code{x} ein Skalar oder ein
1172 (%i2) nonscalarp(x);
1176 Hat @code{assumescalar} den Wert @code{true}, behandelt Maxima das Symbol
1177 @code{x} als einen Skalar f@"ur die kommutative Multiplikation.
1180 (%i3) x * [a,b,c], assumescalar:false;
1182 (%i4) x * [a,b,c], assumescalar:true;
1183 (%o4) [a x, b x, c x]
1186 F@"ur die nicht kommutative Multiplikation behandelt Maxima das Symbol @code{x}
1187 dann als einen Skalar, wenn @code{assumescalar} den Wert @code{all} hat.
1190 (%i5) x . [a,b,c], assumescalar:false;
1192 (%i6) x . [a,b,c], assumescalar:true;
1194 (%i7) x . [a,b,c], assumescalar:all;
1195 (%o7) [x . a, x . b, x . c]
1199 @c --- 12.02.2011 DK -----------------------------------------------------------
1201 @defvr {Optionsvariable} assume_pos
1202 Standardwert: @code{false}
1204 Die Optionsvariable @code{assume_pos} kontrolliert das Ergebnis der Funktionen
1205 @mref{sign} und @mrefcomma{asksign} f@"ur den Fall, dass Maxima das Vorzeichen
1206 einer Variablen oder indizierten Variablen nicht aus den aktiven Kontexten
1207 ermitteln kann. Hat @code{assume_pos} den Wert @code{true}, dann wird f@"ur
1208 Variable oder indizierte Variable, immer das Ergebnis @code{pos} ermittelt, wenn
1209 die Optionsvariable @code{assume_pos_pred} den Standardwert @code{false} hat und
1210 das Vorzeichen nicht aus den aktiven Kontexten ermittelt werden kann.
1212 Die Optionsvariable @mref{assume_pos_pred} hat den Standardwert @code{false}.
1213 In diesem Fall werden von Maxima Variablen und indizierte Variablen als positiv
1214 angenommen, wenn @code{assume_pos} den Wert @code{true} hat. Der
1215 Optionsvariablen @mref{assume_pos_pred} kann eine Aussagefunktion mit einem
1216 Argument zugewiesen werden. Hat die Aussagefunktion f@"ur ein Argument
1217 @var{expr} das Ergebnis @code{true}, wird das Argument als positiv
1218 angenommen, wenn die Optionsvariable @code{assume_pos} den Wert @code{true} hat
1219 und Maxima das Vorzeichen nicht aus den aktiven Kontexten ermitteln kann.
1221 Die Funktionen @code{sign} und @code{asksign} versuchen das Vorzeichen eines
1222 Ausdrucks anhand der Vorzeichen der Argumente zu ermitteln. Sind zum Beispiel
1223 @code{a} und @code{b} beide positiv, dann wird f@"ur den Ausdruck @code{a+b} ein
1224 positives Vorzeichen ermittelt. Auch wenn die Vorzeichen der Variablen @code{a}
1225 und @code{b} nicht bekannt sind, hat daher @code{asksign(a+b)} das Ergebnis
1226 @code{pos}, wenn @code{assume_pos} den Wert @code{true} hat, da in diesem Fall
1227 die Variablen als positiv angenommen werden.
1229 Es gibt jedoch keine M@"oglichkeit, alle Ausdr@"ucke grunds@"atzlich als positiv
1230 zu erkl@"aren. Selbst wenn der Optionsvariablen @code{assume_pos_pred} eine
1231 Aussagefunktion zugewiesen wird, die alle Ausdr@"ucke als positiv erkl@"art,
1232 werden Differenzen @code{a-b} oder das Vorzeichen der Logarithmusfunktion
1233 @code{log(a)} nicht als positiv ermittelt. Die Fragen der Funktion
1234 @code{asksign} an den Nutzer k@"onnen daher nie vollst@"andig mit dem
1235 Mechanismus der Optionsvariablen @code{assume_pos} unterdr@"uckt werden.
1237 Siehe f@"ur weitere Beispiele die Optionsvariable @mrefdot{assume_pos_pred}
1241 Das Vorzeichen der Variablen @code{x} ist nicht bekannt. Erh@"alt die
1242 Optionsvariable @code{assume_pos} den Wert @code{true}, wird f@"ur die Variable
1243 @code{x} und die indizierte Variable @code{x[1]} ein positives Vorzeichen
1249 (%i2) assume_pos:true;
1257 Die Vorzeichen der Variablen @code{a} und @code{b} sind nicht bekannt. Maxima
1258 ermittelt ein positives Vorzeichen f@"ur die Summe der Variablen. Das
1259 Vorzeichen der Differenz ist dagegen weiterhin nicht bekannt.
1269 @c --- 12.02.2011 DK -----------------------------------------------------------
1270 @anchor{assume_pos_pred}
1271 @defvr {Optionsvariable} assume_pos_pred
1272 Standardwert: @code{false}
1274 Der Optionsvariablen @code{assume_pos_pred} kann eine Aussagefunktion wie zum
1275 Beispiel @mref{symbolp} oder ein Lambda-Ausdruck mit einem Argument @code{x}
1276 zugewiesen werden. Hat die Optionsvariable @mref{assume_pos} den Wert
1277 @code{true}, werden Variablen, indizierte Variablen oder die Werte von
1278 Funktionen dann als positiv angenommen, wenn die Aussagefunktion das Ergebnis
1281 Die Aussagefunktion wird intern von den Funktionen @mref{sign} und
1282 @mref{asksign} aufgerufen, wenn die Optionsvariable @code{assume_pos} den Wert
1283 @code{true} hat und das Vorzeichen einer Variablen, indizierten Variablen oder
1284 f@"ur den Wert einer Funktion nicht ermittelt werden konnte. Gibt die
1285 Aussagefunktion das Ergebnis @code{true} zur@"uck, wird das Argument als
1288 Hat die Optionsvariable @code{assume_pos_pred} den Standardwert @code{false}
1289 werden Variablen und indizierte Variablen von Maxima als positiv angenommen,
1290 wenn die Optionsvariable @code{assume_pos} den Wert @code{true} hat. Das
1291 entspricht einer Aussagefunktion, die als @code{lambda([x], symbolp(x) or
1292 subvarp(x))} definiert wird.
1294 Siehe auch @mref{assume} und @mrefdot{assume_pos}
1298 Der Optionsvariablen @code{assume_pos_pred} wird der Name der Aussagefunktion
1299 @code{symbolp} zugewiesen. Indizierte Variablen werden nun nicht mehr als
1300 positiv angenommen, wie es f@"ur den Standartwert @code{false} gilt.
1303 (%i1) assume_pos: true$
1304 (%i2) assume_pos_pred: symbolp$
1311 Der Optionsvariablen @code{assume_pos_pred} wird ein Lambda-Ausdruck zugewiesen,
1312 der f@"ur alle Argumente das Ergebnis @code{true} hat. Die Funktion @code{sign}
1313 ermittelt nun f@"ur Variablen, indizierte Variablen und den Werten von
1314 Funktionen ein positives Vorzeichen. Dies trifft jedoch nicht f@"ur die
1315 Logarithmusfunktion oder eine Differenz zu.
1318 (%i1) assume_pos: true$
1319 (%i2) assume_pos_pred: lambda([x], true);
1320 (%o2) lambda([x], true)
1327 (%i6) sign(foo(x)+foo(y));
1336 @c --- 12.02.2011 DK -----------------------------------------------------------
1338 @defvr {Optionsvariable} context
1339 Standardwert: @code{initial}
1341 Die Optionsvariable @code{context} enth@"alt den Namen des aktuellen Kontextes.
1342 Das ist der Kontext, der die Aussagen der Funktion @mref{assume} oder die mit
1343 der Funktion @mref{declare} definierten Eigenschaften aufnimmt und aus dem die
1344 Aussagen mit der Funktion @mref{forget} oder die Eigenschaften mit der Funktion
1345 @mref{remove} gel@"oscht werden.
1347 Wird der Optionsvariablen @code{context} der Name eines existierenden Kontextes
1348 zugewiesen, wird dieser zum aktuellen Kontext. Existiert der Kontext noch
1349 nicht, wird er durch Aufruf der Funktion @mref{newcontext} erzeugt.
1351 Siehe auch @mref{contexts} f@"ur eine allgemeinere Beschreibung von Kontexten.
1355 Der Standardkontext ist @code{initial}. Es wird ein neuer Kontext
1356 @code{mycontext} generiert, der die Aussagen und Eigenschaften aufnimmt.
1361 (%i2) context:mycontext;
1364 (%o3) [mycontext, initial, global]
1367 (%i5) declare(b,integer);
1369 (%i6) facts(mycontext);
1370 (%o6) [a > 0, kind(b, integer)]
1374 @c --- 12.02.2011 DK -----------------------------------------------------------
1376 @defvr {Systemvariable} contexts
1377 Standardwert: @code{[initial, global]}
1379 Die Systemvariable @code{contexts} enth@"alt eine Liste der Kontexte, die
1380 Maxima bekannt sind. Die Liste enth@"alt auch die nicht aktiven Kontexte.
1382 Die Kontexte @code{global} und @code{initial} sind immer vorhanden. Diese
1383 werden von Maxima initialisiert und k@"onnen nicht entfernt werden. Der Kontext
1384 @code{global} enth@"alt Aussagen und Fakten f@"ur Systemvariablen und
1385 Systemfunktionen. Mit den Funktionen @mref{newcontext} oder
1386 @mref{supcontext} kann der Nutzer weitere Kontexte anlegen.
1388 Die Kontexte haben eine Hierarchie. Die Wurzel ist immer der Kontext
1389 @code{global}, der damit ein Unterkontext aller anderen Kontexte und immer aktiv
1390 ist. Der Kontext @code{initial} ist anfangs leer und nimmt, sofern kein
1391 weiterer Kontext angelegt wurde, die Aussagen und Fakten des Nutzers auf, die
1392 mit den Funktionen @mref{assume} und @mref{declare} definiert werden. Mit der
1393 Funktion @mref{facts} k@"onnen die Aussagen und Fakten von Kontexten angezeigt
1396 Die Verwaltung verschiedener Kontexte erm@"oglicht es, Aussagen und Fakten in
1397 einem Kontext zusammenzustellen. Durch das Aktivieren mit der Funktion
1398 @mref{activate} oder Deaktivieren mit der Funktion @mref{deactivate} k@"onnen
1399 diese Aussagen und Fakten f@"ur Maxima verf@"ugbar gemacht oder wieder
1400 ausgeschaltet werden.
1402 Die Aussagen und Fakten in einem Kontext bleiben so lange verf@"ugbar, bis sie
1403 mit den Funktionen @mref{forget} oder @mref{remove} gel@"oscht werden.
1404 Weiterhin kann der gesamte Kontext mit der Funktion @mref{killcontext} entfernt
1409 Das folgende Beispiel zeigt wie ein Kontext @code{mycontext} angelegt wird. Der
1410 Kontext enth@"alt die Aussage @code{[a>0]}. Der Kontext kann mit der Funktion
1411 @code{activate} aktiviert werden, um die Aussage verf@"ugbar zu machen.
1414 (%i1) newcontext(mycontext);
1420 (%i4) context:initial;
1424 (%i6) activate(mycontext);
1431 @c --- 27.08.2010 DK -----------------------------------------------------------
1433 @deffn {Funktion} deactivate (@var{context_1}, @dots{}, @var{context_n})
1435 Die Kontexte @var{context_1}, @dots{}, @var{context_n} werden deaktiviert. Die
1436 Aussagen und Fakten dieser Kontexte stehen f@"ur die Auswertung von Aussagen
1437 nicht mehr zur Verf@"ugung. Die Kontexte werden nicht gel@"oscht und k@"onnen
1438 mit der Funktion @mref{activate} wieder aktiviert werden.
1440 Die deaktivierten Kontexte werden aus der Liste @mref{activecontexts} entfernt.
1443 @c --- 12.02.2011 DK -----------------------------------------------------------
1445 @deffn {Funktion} facts (@var{item})
1446 @deffnx {Funktion} facts ()
1448 Ist @var{item} der Name eines Kontextes, gibt @code{facts(@var{item})} eine
1449 Liste der Aussagen und Fakten des Kontextes @code{item} zur@"uck.
1451 Ist @var{item} nicht der Name eines Kontextes, gibt @code{facts(@var{item})}
1452 eine Liste mit den Aussagen und Fakten zur@"uck, die zu @var{item} im aktuellen
1453 Kontext bekannt sind. Aussagen und Fakten die zu einem anderen aktiven Kontext
1454 geh@"oren einschlie@ss{}lich der Unterkontexte, sind nicht in der Liste
1457 @code{facts()} gibt eine Liste der Fakten des aktuellen Kontextes zur@"uck.
1462 (%i1) context:mycontext;
1464 (%i2) assume(a>0, a+b>0, x<0);
1465 (%o2) [a > 0, b + a > 0, x < 0]
1467 (%o3) [a > 0, b + a > 0, 0 > x]
1469 (%o4) [a > 0, b + a > 0]
1472 (%i6) context:initial;
1474 (%i7) activate(mycontext);
1478 (%i9) facts(mycontext);
1479 (%o9) [a > 0, b + a > 0, 0 > x]
1483 @c --- 27.08.2010 DK -----------------------------------------------------------
1485 @deffn {Funktion} forget (@var{pred_1}, @dots{}, @var{pred_n})
1486 @deffnx {Funktion} forget (@var{L})
1488 Entfernt Aussagen, die mit @code{assume} einem Kontext hinzugef@"ugt wurden.
1489 Die Aussagen k@"onnen Ausdr@"ucke sein, die @"aquivalent aber nicht unbedingt
1490 identisch zu vorherigen Fakten sind.
1492 @code{forget(@var{L})} entfernt alle Aussagen, die in der Liste @var{L}
1496 @c --- 12.11.2010 DK -----------------------------------------------------------
1498 @deffn {Funktion} is (@var{expr})
1500 Versucht festzustellen, ob die Aussage @var{expr} mit Hilfe der Aussagen und
1501 Fakten der aktiven Kontexte entschieden werden kann.
1503 Kann die Aussage @var{expr} zu @code{true} oder @code{false} entschieden werden,
1504 wird das entsprechende Ergebnis zur@"uckgegeben. Andernfalls wird der
1505 R@"uckgabewert durch den Schalter @mref{prederror} bestimmt. Hat
1506 @code{prederror} den Wert @code{true}, wird eine Fehlermeldung ausgegeben.
1507 Ansonsten wird @code{unknown} zur@"uckgegeben.
1509 Siehe auch @mrefcomma{assume} @mref{facts} und @mrefdot{maybe}
1513 @code{is} wertet Aussagen aus.
1518 (%i2) is (%pi > %e);
1522 @code{is} versucht Aussagen anhand der Aussagen und Fakten der aktiven
1523 Kontexte zu entscheiden.
1526 (%i1) assume (a > b);
1528 (%i2) assume (b > c);
1534 (%i5) is (equal (a, c));
1538 Wenn @code{is} eine Aussage anhand der Aussagen und Fakten der aktiven Kontexte
1539 nicht entscheiden kann, wird der R@"uckgabewert vom Wert des Schalters
1540 @code{prederror} bestimmt.
1543 (%i1) assume (a > b);
1545 (%i2) prederror: true$
1547 Maxima was unable to evaluate the predicate:
1549 -- an error. Quitting. To debug this try debugmode(true);
1550 (%i4) prederror: false$
1556 @c --- 27.08.2010 DK -----------------------------------------------------------
1557 @anchor{killcontext}
1558 @deffn {Funktion} killcontext (@var{context_1}, @dots{}, @var{context_n})
1560 Das Kommando @code{killcontext(@var{context})} l@"oscht den Kontext
1563 Ist einer der Kontexte der aktuelle Kontext, wird der erste vorhandene
1564 Unterkontext zum aktuellen Kontext. Ist der erste verf@"ugbare Kontext der
1565 Kontext @code{global}, dann wird der Kontext @code{initial} zum aktuellen
1566 Kontext. Wird der Kontext @code{initial} gel@"oscht, dann wird eine neuer
1567 leerer Kontext @code{initial} erzeugt.
1569 @code{killcontext} l@"oscht einen Kontext nicht, wenn dieser ein Unterkontext
1570 des aktuellen Kontextes ist oder wenn der Kontext mit der Funktion
1571 @code{activate} aktiviert wurde.
1573 @code{killcontext} wertet die Argumente aus. @code{killcontext} gibt
1574 @code{done} zur@"uck.
1577 @c --- 12.11.2010 DK -----------------------------------------------------------
1579 @deffn {Funktion} maybe (@var{expr})
1581 Versucht festzustellen, ob die Aussage @var{expr} anhand der Aussagen und
1582 Fakten der aktive Kontexte entschieden werden kann.
1584 Kann die Aussage als @code{true} oder @code{false} entschieden werden, gibt
1585 @code{maybe} entsprechend @code{true} oder @code{false} zur@"uck. Andernfalls
1586 gibt @code{maybe} den Wert @code{unknown} zur@"uck.
1588 @code{maybe} entspricht der Funktion @code{is} mit @code{prederror: false}.
1589 Dabei wird @code{maybe} ausgef@"uhrt, ohne dass @code{prederror} einen Wert
1592 Siehe auch @mrefcomma{assume} @mref{facts} und @mrefdot{is}
1597 (%i1) maybe (x > 0);
1599 (%i2) assume (x > 1);
1601 (%i3) maybe (x > 0);
1606 @c --- 27.08.2010 DK -----------------------------------------------------------
1608 @deffn {Funktion} newcontext (@var{name})
1610 @code{newcontext(@var{name})} erzeugt einen neuen, leeren Kontext mit dem
1611 Namen @var{name}. Der neue Kontext hat den Kontext @code{global} als Subkontext
1612 und wird zum aktuellen Kontext.
1614 @code{newcontext} wertet seine Argumente aus. @code{newcontext} gibt
1615 @code{name} zur@"uck.
1618 @c --- 28.12.2010 DK -----------------------------------------------------------
1620 @defvr {Optionsvariable} prederror
1621 Standardwert: @code{false}
1623 Hat @code{prederror} den Wert @code{true}, wird eine Fehlermeldung ausgegeben,
1624 wenn eine Aussage mit einer @code{if}-Anweisung oder der Funktion @code{is}
1625 nicht zu @code{true} oder @code{false} ausgewertet werden kann.
1627 Hat @code{prederror} den Wert @code{false}, wird f@"ur diese F@"alle
1628 @code{unknown} zur@"uckgegeben.
1630 Siehe auch @mref{is} und @mrefdot{maybe}
1633 @c --- 12.11.2010 DK -----------------------------------------------------------
1635 @deffn {Funktion} sign (@var{expr})
1637 Versucht das Vorzeichen des Ausdrucks @var{expr} auf Grundlage der Fakten der
1638 aktuellen Datenbank zu finden. @code{sign} gibt eine der folgende Antworten
1639 zur@"uck: @code{pos} (positiv), @code{neg} (negative), @code{zero} (null),
1640 @code{pz} (positive oder null), @code{nz} (negative oder null), @code{pn}
1641 (positiv oder negative) oder @code{pnz} (positiv, negative oder null, f@"ur den
1642 Fall das Vorzeichen nicht bekannt ist).
1645 @c --- 27.08.2010 DK -----------------------------------------------------------
1647 @deffn {Funktion} supcontext (@var{name}, @var{context})
1648 @deffnx {FunKtion} supcontext (@var{name})
1650 Erzeugt einen neuen Kontext, mit dem Namen @code{name}, der den Kontext
1651 @code{context} als einen Unterkontext enth@"alt. Der Kontext @var{context} muss
1654 Wird @var{context} nicht angegeben, wird der aktuelle Kontext angenommen.
1657 @c -----------------------------------------------------------------------------
1658 @node Funktionen und Variablen f@"ur Aussagen, , Funktionen und Variablen f@"ur Fakten, Maximas Datenbank
1659 @section Funktionen und Variablen f@"ur Aussagen
1660 @c -----------------------------------------------------------------------------
1662 @c --- 27.08.2010 DK -----------------------------------------------------------
1664 @deffn {Funktion} charfun (@var{p})
1666 Gibt den Wert 0 zur@"uck, wenn die Aussage @var{p} zu @code{false} ausgewertet
1667 werden kann und den Wert 1, wenn die Auswertung @code{true} liefert. Kann
1668 die Aussage weder zu @code{false} oder @code{true} ausgewertet werden, wird eine
1669 Substantiv-Form zur@"uck gegeben.
1674 (%i1) charfun (x < 1);
1675 (%o1) charfun(x < 1)
1676 (%i2) subst (x = -1, %);
1678 (%i3) e : charfun ('"and" (-1 < x, x < 1))$
1679 (%i4) [subst (x = -1, e), subst (x = 0, e), subst (x = 1, e)];
1684 @c --- 27.08.2010 DK -----------------------------------------------------------
1686 @deffn {Funktion} compare (@var{x}, @var{y})
1688 Liefert den Vergleichsoperator @var{op} (@code{<}, @code{<=}, @code{>},
1689 @code{>=}, @code{=} oder @code{#}), so dass der Ausdruck @code{is(@var{x}
1690 @var{op} @var{y})} zu @code{true} ausgewertet werden kann. Ist eines der
1691 Argumente eine komplexe Zahl, dann wird @code{notcomparable} zur@"uckgegeben.
1692 Kann Maxima keinen Vergleichsoperator bestimmen, wird @code{unknown}
1698 (%i1) compare (1, 2);
1700 (%i2) compare (1, x);
1702 (%i3) compare (%i, %i);
1704 (%i4) compare (%i, %i + 1);
1706 (%i5) compare (1/x, 0);
1708 (%i6) compare (x, abs(x));
1712 Die Funktion @code{compare} versucht nicht festzustellen, ob der Wertebereich
1713 einer Funktion reelle Zahlen enth@"alt. Obwohl der Wertebereich von
1714 @code{acos(x^2+1)} bis auf Null keine reellen Zahlen enth@"alt, gibt
1715 @code{compare} das folgende Ergebnis zur@"uck:
1718 (%i1) compare (acos (x^2 + 1), acos (x^2 + 1) + 1);
1723 @c --- 20.04.2011 DK -----------------------------------------------------------
1725 @deffn {Funktion} equal (@var{a}, @var{b})
1727 Repr@"asentiert die @"Aquivalenz, das hei@ss{}t den gleichen Wert.
1729 @code{equal} wird nicht ausgewertet oder vereinfacht. Die Funktion
1730 @mref{is} versucht einen Ausdruck mit @code{equal} zu einem booleschen Wert
1731 auszuwerten. @code{is(equal(@var{a}, @var{b}))} gibt @code{true} oder
1732 @code{false} zur@"uck, wenn und nur wenn @var{a} und @var{b} gleich oder
1733 ungleich sind f@"ur alle Werte ihrer Variablen, was mit @code{ratsimp(@var{a} -
1734 @var{b})} bestimmt wird. Gibt @mref{ratsimp} das Ergebnis 0 zur@"uck, werden
1735 die beiden Ausdr@"ucke als @"aquivalent betracht. Zwei Ausdr@"ucke k@"onnen
1736 @"aquivalent sein, obwohl sie nicht syntaktisch gleich (im allgemeinen
1739 Kann @code{is} einen Ausdruck mit @code{equal} nicht zu @code{true} oder
1740 @code{false} auswerten, h@"angt das Ergebnis vom Wert des globalen Flags
1741 @mref{prederror} ab. Hat @code{prederror} den Wert @code{true}, gibt @code{is}
1742 eine Fehlermeldung zur@"uck. Ansonsten wird @code{unknown} zur@"uckgegeben.
1744 Es gibt weitere Operatoren, die einen Ausdruck mit @code{equal} zu @code{true}
1745 oder @code{false} auswerten k@"onnen. Dazu geh@"oren @mrefcomma{if}@w{}
1746 @mrefcomma{and} @mref{or} und @mrefdot{not}
1748 Die Umkehrung von @code{equal} ist @mrefdot{notequal}
1752 @code{equal} wird von allein weder ausgewertet noch vereinfacht:
1755 (%i1) equal (x^2 - 1, (x + 1) * (x - 1));
1757 (%o1) equal(x - 1, (x - 1) (x + 1))
1758 (%i2) equal (x, x + 1);
1759 (%o2) equal(x, x + 1)
1764 Die Funktion @code{is} versucht, @code{equal} zu einem booleschen Wert
1765 auszuwerten. Der Ausdruck @code{is(equal(@var{a}, @var{b}))} gibt den Wert
1766 @code{true} zur@"uck, when @code{ratsimp(@var{a} - @var{b})} den Wert 0 hat.
1767 Zwei Ausdr@"ucke k@"onnen @"aquivalent sein, obwohl sie nicht syntaktisch
1771 (%i1) ratsimp (x^2 - 1 - (x + 1) * (x - 1));
1773 (%i2) is (equal (x^2 - 1, (x + 1) * (x - 1)));
1775 (%i3) is (x^2 - 1 = (x + 1) * (x - 1));
1777 (%i4) ratsimp (x - (x + 1));
1779 (%i5) is (equal (x, x + 1));
1781 (%i6) is (x = x + 1);
1783 (%i7) ratsimp (x - y);
1785 (%i8) is (equal (x, y));
1791 Kann @code{is} einen Ausdruck mit @code{equal} nicht zu @code{true} oder
1792 @code{false} vereinfachen, h@"angt das Ergebnis vom Wert des globalen Flags
1793 @code{prederror} ab.
1796 (%i1) [aa : x^2 + 2*x + 1, bb : x^2 - 2*x - 1];
1798 (%o1) [x + 2 x + 1, x - 2 x - 1]
1799 (%i2) ratsimp (aa - bb);
1801 (%i3) prederror : true;
1803 (%i4) is (equal (aa, bb));
1804 Maxima was unable to evaluate the predicate:
1806 equal(x + 2 x + 1, x - 2 x - 1)
1807 -- an error. Quitting. To debug this try debugmode(true);
1808 (%i5) prederror : false;
1810 (%i6) is (equal (aa, bb));
1814 Einige weitere Operatoren werten @code{equal} und @code{notequal} zu einem
1815 booleschen Wert aus.
1818 (%i1) if equal (y, y - 1) then FOO else BAR;
1820 (%i2) eq_1 : equal (x, x + 1);
1821 (%o2) equal(x, x + 1)
1822 (%i3) eq_2 : equal (y^2 + 2*y + 1, (y + 1)^2);
1824 (%o3) equal(y + 2 y + 1, (y + 1) )
1825 (%i4) [eq_1 and eq_2, eq_1 or eq_2, not eq_1];
1826 (%o4) [false, true, true]
1829 Da @code{not @var{expr}} den Ausdruck @var{expr} auswertet, ist
1830 @code{not equal(@var{a}, @var{b})} @"aquivalent zu
1831 @code{is(notequal(@var{a}, @var{b}))}
1834 (%i1) [notequal (2*z, 2*z - 1), not equal (2*z, 2*z - 1)];
1835 (%o1) [notequal(2 z, 2 z - 1), true]
1836 (%i2) is (notequal (2*z, 2*z - 1));
1841 @c --- 12.11.2010 DK -----------------------------------------------------------
1843 @deffn {Funktion} notequal (@var{a}, @var{b})
1845 Repr@"asentiert die Verneinung von @code{equal(@var{a}, @var{b})}.
1852 (%i2) maybe (equal (a, b));
1854 (%i3) notequal (a, b);
1855 (%o3) notequal(a, b)
1856 (%i4) not equal (a, b);
1857 (%o4) notequal(a, b)
1858 (%i5) maybe (notequal (a, b));
1860 (%i6) assume (a > b);
1864 (%i8) maybe (equal (a, b));
1866 (%i9) notequal (a, b);
1867 (%o9) notequal(a, b)
1868 (%i10) maybe (notequal (a, b));
1873 @c --- 12.11.2010 DK -----------------------------------------------------------
1875 @deffn {Funktion} unknown (@var{expr})
1877 @c TODO: FORMULIERUNG?
1879 Gibt den Wert @code{true} zur@"uck, wenn der Ausdruck @var{expr} einen Operator
1880 oder eine Funktion enth@"alt, die nicht von Maximas Vereinfacher erkannt wird.
1883 @c --- 12.11.2010 DK -----------------------------------------------------------
1885 @deffn {Funktion} zeroequiv (@var{expr}, @var{v})
1887 Testet, ob ein Ausdruck @var{expr} mit der Variablen @var{v} @"aquivalent zu
1888 Null ist. Die Funktion gibt @code{true}, @code{false} oder @code{dontknow}
1891 @code{zeroequiv} hat Einschr@"ankungen:
1895 Funktionen im Ausdruck @var{expr} m@"ussen von Maxima differenzierbar und
1899 Hat der Ausdruck Pole auf der reellen Achse, k@"onnen Fehler auftreten.
1902 Enth@"alt der Ausdruck Funktionen, die nicht L@"osung einer
1903 Differentialgleichung erster Ordnung sind (zum Beispiel Bessel Funktionen),
1904 k@"onnen die Ergebnisse fehlerhaft sein.
1907 Der Algorithmus wertet die Funktion an zuf@"allig Punkten f@"ur ausgew@"ahlte
1908 Teilausdr@"ucke aus. Dies ist ein riskantes Verfahren und kann zu Fehlern
1912 @code{zeroequiv(sin(2*x) - 2*sin(x)*cos(x), x)} hat zum Beispiel das Ergebnis
1913 @code{true} und @code{zeroequiv (%e^x + x, x)} hat das Ergebnis @code{false}.
1914 Andererseits hat @code{zeroequiv (log(a*b) - log(a) - log(b), a)} das Ergebnis
1915 @code{dontknow}, wegen dem zus@"atzlichem Parameter @code{b}.
1918 @c --- End of Database.de.texi -------------------------------------------------