1 @c -----------------------------------------------------------------------------
2 @c File : Evaluation.de.texi
3 @c License : GNU General Public License (GPL)
5 @c Original : Evaluation.texi revision 01.08.2011
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 01.11.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
14 * Einf@"uhrung in die Auswertung::
15 * Funktionen und Variablen f@"ur die Auswertung::
18 @c -----------------------------------------------------------------------------
19 @node Einf@"uhrung in die Auswertung, Funktionen und Variablen f@"ur die Auswertung, Auswertung, Auswertung
20 @section Einf@"uhrung in die Auswertung
21 @c -----------------------------------------------------------------------------
23 In @ref{Einf@"uhrung in die Kommandozeile} sind die vier Phasen der Eingabe,
24 Auswertung, Vereinfachung und Ausgabe erl@"autert, die jede Eingabe des Nutzers
25 bis zur Ausgabe auf der Konsole durchl@"auft.
27 Jede Eingabe eines Ausdrucks @var{expr} wird von Maxima ausgewertet. Symbole,
28 die keinen Wert haben, und Zahlen werden zu sich selbst ausgewertet. Symbole,
29 die einen Wert haben, werden durch ihren Wert ersetzt.
33 Im ersten Beispiel werden Symbole und Zahlen zu sich selbst ausgewertet. Im
34 zweiten Beispiel erh@"alt die Variable @code{a} den Wert @code{2}. In den
35 folgenden Ausdr@"ucken wird die Variable @code{a} ausgewertet und durch ihren
39 (%i1) [a, b, 2, 1/2, 1.0];
41 (%o1) [a, b, 2, -, 1.0]
45 (%i3) [a, sin(a), a^2];
49 Maxima unterscheidet Funktionen in einer Verbform von Funktionen in einer
50 Substantivform. Funktionen in einer Verbform werden ausgewertet, indem die
51 Funktion auf die ausgewerteten Argumente angewendet wird. Im Gegensatz dazu
52 werden Funktionen in einer Substantivform nicht auf die Argumente angewendet,
53 jedoch werden die Argumente weiterhin ausgewertet. Funktionen k@"onnen in
54 beiden Formen auftreten. Typische Beispiele sind die Differentiation mit der
55 Funktion @mref{diff} oder die Integration mit der Funktion @mrefdot{integrate}
56 Siehe zum diesem Thema auch @ref{Substantive und Verben}.
60 Die Variable @code{a} erh@"alt einen Wert. Im ersten Fall liegt die Funktion
61 @code{diff} in ihrer Verbform vor. Die Auswertung bewirkt, dass die Funktion
62 auf die Argumente @code{a*x^2} und @var{x} angewendet wird. Im zweiten Fall
63 liegt die Funktion @code{diff} in ihrer Substantivform vor. Dies wird hier
64 durch den @mxref{', Quote-Operator} @code{'} bewirkt. Jetzt wird die Funktion
65 nicht angewendet. Das Ergebnis ist ein symbolischer Ausdruck f@"ur die
66 Ableitung. Da auch in diesem Fall die Argumente ausgewertet werden, wird auch
67 hier der Wert @code{1/2} f@"ur die Variable @code{a} eingesetzt.
76 (%i3) 'diff(a*x^2, x);
85 Nicht alle Maxima-Funktionen werten die Argumente aus. Die Dokumentation der
86 Funktionen gibt h@"aufig einen Hinweis darauf, ob die Argumente ausgewertet
91 Die Funktion @mref{properties} wertet das Argument nicht aus. Dies ist f@"ur
92 den Nutzer praktisch, da ansonsten die Auswertung einer Variablen @code{a}, die
93 einen Wert hat, explizit mit dem Quote-Operator @code{'} unterdr@"uckt werden
94 m@"usste, um die Eigenschaften des Symbols @code{'a} anzuzeigen. Im ersten Fall
95 ist das Ergebnis eine leere Liste. Das Symbol @code{a} hat keine Eigenschaften.
96 Im zweiten Fall erh@"alt die Variable @code{a} einen Wert. Die Funktion
97 @code{properties} wertet ihr Argument nicht aus und @code{a} wird nicht durch
98 den Wert @code{2} ersetzt. Die Funktion @code{properties} zeigt weiterhin die
99 Eigenschaften des Symbols @code{'a} an.
110 Die Auswertung von Symbolen, Funktionen und Ausdr@"ucken kann mit dem
111 @nxref{', Quote-Operator} @code{'} und dem @nxref{'', Quote-Quote-Operator}@w{}
112 @code{''} kontrolliert werden. Der Quote-Operator unterdr@"uckt die Auswertung.
113 Dagegen erzwingt der Quote-Quote-Operator die Auswertung.
115 Mit der Funktion @mref{ev} wird ein Ausdruck in einer definierten Umgebung
116 ausgewertet, in der Optionsvariablen f@"ur die Auswertung einen bestimmten Wert
117 erhalten oder Auswertungsschalter @mref{evflag} und Auswertungsfunktionen
118 @mref{evfun} angewendet werden.
120 @c -----------------------------------------------------------------------------
121 @node Funktionen und Variablen f@"ur die Auswertung, , Einf@"uhrung in die Auswertung, Auswertung
122 @section Funktionen und Variablen f@"ur die Auswertung
123 @c -----------------------------------------------------------------------------
125 @c --- 07.03.2011 DK -----------------------------------------------------------
127 @findex Quote-Operator
130 Der Quote-Operator @code{'} unterdr@"uckt die Auswertung eines Symbols oder
131 Ausdrucks. Auf eine Funktion angewendet, unterdr@"uckt der Quote-Operator die
132 Auswertung der Funktion. Die Auswertung der Argumente der Funktion wird nicht
133 unterdr@"uckt. Das Ergebnis ist die Substantivform der Funktion.
135 Wird der Quote-Operator auf einen eingeklammerten Ausdruck angewendet, wird die
136 Auswertung aller Symbole und Funktionen innerhalb der Klammern unterdr@"uckt.
137 @code{'(f(x))} bedeutet, dass der Ausdruck @code{f(x)} nicht ausgewertet werden
138 soll. @code{'f(x)} bedeutet, dass die Substantivform von @code{f} auf das
139 ausgewertete Argument @var{x} angewendet wird.
141 Der Quote-Operator unterdr@"uckt die Auswertung, aber nicht die Vereinfachung
144 Substantivformen werden mit einem Hochkomma angezeigt, wenn die Optionsvariable
145 @mref{noundisp} den Wert @code{true} hat.
147 Siehe auch den @nxref{'', Quote-Quote-Operator} @code{'@w{}'} und den
148 Auswertungsschalter @mrefdot{nouns}
152 Auf ein Symbol angewendet, unterdr@"uckt der Quote-Operator die Auswertung des
169 Auf eine Funktion angewendet, unterdr@"uckt der Quote-Operator die Auswertung
170 der Funktion. Das Ergebnis ist die Substantivform der Funktion.
178 (%i3) integrate (x^2, x, x0, x1);
183 (%i4) 'integrate (x^2, x, x0, x1);
199 Wird der Quote-Operator auf einen eingeklammerten Ausdruck angewendet, wird die
200 Auswertung aller Symbole und Funktionen innerhalb der Klammern unterdr@"uckt.
209 (%i4) '(sqrt(aa) + bb);
215 Der Quote-Operator unterdr@"uckt nicht die Vereinfachung von Ausdr@"ucken.
218 (%i1) sin (17 * %pi) + cos (17 * %pi);
220 (%i2) '(sin (17 * %pi) + cos (17 * %pi));
224 Gleitkommarechnungen sind eine Vereinfachung und keine Auswertung. Daher kann
225 die Berechnung von @code{sin(1.0)} nicht mit dem Quote-Operator unterdr@"uckt
230 (%o1) .8414709848078965
232 (%o2) .8414709848078965
236 @c --- 07.03.2011 DK -----------------------------------------------------------
238 @findex Quote-Quote-Operator
241 Der Quote-Quote-Operator @code{'@w{}'} (zwei Hochkommata) modifiziert die
242 Auswertung von Ausdr@"ucken, die von der Eingabe gelesen werden.
244 Wird der Quote-Quote-Operator auf einen allgemeinen Ausdruck @var{expr}
245 angewendet, wird der Ausdruck @var{expr} durch seinen Wert ersetzt.
247 Wird der Quote-Quote-Operator auf den Operator eines Ausdruckes angewendet,
248 @"andert sich der Operator, wenn er in seiner Substantivform vorliegt, in die
251 Der Quote-Quote-Operator wird vom Parser, der die Eingabe liest, sofort
252 angewendet und nicht im eingelesen Ausdruck gespeichert. Daher kann die
253 Auswertung des Quote-Quote-Operators nicht durch einen weiteren Quote-Operator
254 verhindert werden. Der Quote-Quote-Operator f@"uhrt zur Auswertung von
255 Ausdr@"ucken, deren Auswertung unterdr@"uckt ist. Das ist der Fall f@"ur
256 Funktionsdefinitionen, Lambda-Ausdr@"ucke und Ausdr@"ucke, deren Auswertung
257 durch den Quote-Operator verhindert wurde.
259 Der Quote-Quote-Operator wird von den Befehlen @mref{batch} und
262 Siehe auch den @nxref{', Quote-Operator} @code{'} und den Auswertungsschalter
267 Wird der Quote-Quote-Operator auf einen Ausdruck @var{expr} angewendet, wird
268 der Wert von @var{expr} in den Ausdruck eingesetzt.
271 (%i1) expand ((a + b)^3);
273 (%o1) b + 3 a b + 3 a b + a
276 (%o2) [expand((b + a) ), b + 3 a b + 3 a b + a ]
279 (%o3) [expand((b + a) ), b + 3 a b + 3 a b + a ]
280 (%i4) [aa : cc, bb : dd, cc : 17, dd : 29];
281 (%o4) [cc, dd, 17, 29]
282 (%i5) foo_1 (x) := aa - bb * x;
283 (%o5) foo_1(x) := aa - bb x
288 (%i8) ''(foo_1 (10));
291 (%i9) foo_2 (x) := ''aa - ''bb * x;
292 (%o9) foo_2(x) := cc - dd x
296 (%i11) [x0 : x1, x1 : x2, x2 : x3];
306 Wird der Quote-Quote-Operator auf den Operator in einem Ausdruck angewendet,
307 @"andert sich der Operator von seiner Substantivform in die Verbform.
310 (%i1) declare (foo, noun);
312 (%i2) foo (x) := x - 1729;
313 (%o2) ''foo(x) := x - 1729
320 Der Quote-Quote-Operator wird vom Parser sofort auf den eingelesenen Ausdruck
321 angewendet und ist nicht Teil eines Maxima-Ausdrucks.
324 (%i1) [aa : bb, cc : dd, bb : 1234, dd : 5678];
325 (%o1) [bb, dd, 1234, 5678]
328 (%i3) display (_, op (_), args (_));
333 args(cc + aa) = [cc, aa]
338 (%i5) display (_, op (_), args (_));
344 args(dd + bb) = [dd, bb]
349 Der Quote-Quote-Operator bewirkt die Auswertung von Ausdr@"ucken, deren
350 Auswertung unterdr@"uckt ist wie in Funktionsdefinitionen, Lambda-Ausdr@"ucken
351 und Aus@-dr@"u@-cken, auf die der Quote-Operator angewendet wurde.
354 (%i1) foo_1a (x) := ''(integrate (log (x), x));
355 (%o1) foo_1a(x) := x log(x) - x
356 (%i2) foo_1b (x) := integrate (log (x), x);
357 (%o2) foo_1b(x) := integrate(log(x), x)
358 (%i3) dispfun (foo_1a, foo_1b);
359 (%t3) foo_1a(x) := x log(x) - x
361 (%t4) foo_1b(x) := integrate(log(x), x)
364 (%i5) integrate (log (x), x);
366 (%i6) foo_2a (x) := ''%;
367 (%o6) foo_2a(x) := x log(x) - x
368 (%i7) foo_2b (x) := %;
370 (%i8) dispfun (foo_2a, foo_2b);
371 (%t8) foo_2a(x) := x log(x) - x
376 (%i10) F : lambda ([u], diff (sin (u), u));
377 (%o10) lambda([u], diff(sin(u), u))
378 (%i11) G : lambda ([u], ''(diff (sin (u), u)));
379 (%o11) lambda([u], cos(u))
380 (%i12) '(sum (a[k], k, 1, 3) + sum (b[k], k, 1, 3));
381 (%o12) sum(b , k, 1, 3) + sum(a , k, 1, 3)
383 (%i13) '(''(sum (a[k], k, 1, 3)) + ''(sum (b[k], k, 1, 3)));
384 (%o13) b + a + b + a + b + a
389 @c --- 07.03.2011 DK -----------------------------------------------------------
391 @deffn {Funktion} ev (@var{expr}, @var{arg_1}, @dots{}, @var{arg_n})
393 Wertet den Ausdruck @var{expr} in einer Umgebung aus, die durch die Argumente
394 @var{arg_1}, @dots{}, @var{arg_n} spezifiziert wird. Die Argumente sind
395 Optionsvariablen (Boolesche Variablen), Zuweisungen, Gleichungen und Funktionen.
396 @code{ev} gibt das Ergebnis der Auswertung zur@"uck.
398 Die Auswertung wird in den folgenden Schritten durchgef@"uhrt:
402 Zuerst wird die Umgebung gesetzt. Dazu werden die Argumente @var{arg_1},
403 @dots{}, @var{arg_n} ausgewertet. Folgende Argumente sind m@"oglich:
407 @code{simp} bewirkt, dass der Ausdruck @var{expr} vereinfacht wird. Der Wert
408 der Optionsvariablen @mref{simp} wird dabei ignoriert. Der Ausdruck wird also
409 auch dann vereinfacht, wenn die Optionsvariable @var{simp} den Wert @code{false}
413 @code{noeval} unterdr@"uckt die Auswertungphase der Funktion @code{ev} (siehe
414 Schritt (4) unten). Dies ist n@"utzlich im Zusammenhang mit anderen Schaltern
415 und um einen Ausdruck @var{expr} erneuert zu vereinfachen, ohne dass dieser
419 @code{nouns} bewirkt die Auswertung von Substantivformen. Solche
420 Substantivformen sind typischerweise nicht ausgewertete Funktionen wie
421 @code{'integrate} oder @code{'diff}, die im Ausdruck @var{expr} enthalten sind.
424 @code{expand} bewirkt die Expansion des Ausdruckes @var{expr}. Siehe die
425 Funktion @mrefdot{expand}
428 @code{expand}(@var{m}, @var{n}) bewirkt die Expansion des Ausdruckes @var{expr},
429 wobei den Optionsvariablen @mref{maxposex} und @mref{maxnegex} die Werte der
430 Argumente @var{m} und @var{n} zugewiesen werden. Siehe die Funktion
434 @code{detout} bewirkt, dass bei der Berechnung von Inversen von Matrizen, die im
435 Ausdruck @var{expr} enthalten sind, Determinanten den Matrizen vorangestellt
436 und nicht elementweise in die Matrize hereinmultipliziert werden.
439 @code{diff} bewirkt, dass alle Ableitungen ausgef@"uhrt werden, die im Ausdruck
440 @var{expr} enthalten sind.
443 @code{derivlist(@var{x}, @var{y}, @var{z}, ...)} bewirkt, dass die Ableitungen
444 bez@"uglich der angegebenen Variablen @var{x}, @var{y}, @var{z}, @dots{}
448 @code{risch} bewirkt das Integrale im Ausdruck @var{expr} mit dem
449 Risch-Algorithmus berechnet werden. Siehe @code{risch}. Wird der Schalter
450 @mref{nouns} benutzt, wird der Standardalgorithmus f@"ur Integrale verwendet.
453 @code{float} bewirkt, dass rationale Zahlen in Gleitkommazahlen konvertiert
457 @code{numer} bewirkt, dass mathematische Funktionen mit numerischen Argumenten
458 ein Ergebnis in Gleitkommazahlen liefern. Variablen in @code{expr}, denen
459 numerische Werte zugewiesen wurden, werden durch diese ersetzt. Der Schalter
460 @mref{float} wird zus@"atzlich wirksam.
463 @code{pred} bewirkt, dass Aussagen zu @code{true} oder @code{false} ausgewertet
467 @code{eval} bewirkt eine zus@"atzliche Auswertung des Ausdrucks @var{expr}.
468 (Siehe Schritt (5) unten). @code{eval} kann mehrfach angewendet werden. Jedes
469 Auftreten von @code{eval} f@"uhrt zu einer weiteren Auswertung.
472 @code{A}, wobei @code{A} ein Symbol ist, das als ein Auswertungsschalter
473 @mref{evflag} definiert ist. W@"ahrend der Auswertung des Ausdrucks @var{expr}
474 erh@"alt @code{A} den Wert @code{true}.
477 @code{V: expression} (oder alternativ @code{V=expression}) bewirkt, dass
478 @code{V} w@"ahrend der Auswertung des Ausdrucks @var{expr} den Wert
479 @code{expression} erh@"alt. @code{V} kann auch eine Optionsvariable sein, die
480 f@"ur die Auswertung den Wert @code{expression} erh@"alt. Wenn mehr als ein
481 Argument der Funktion @code{ev} @"ubergeben wird, wird die Zuweisung der Werte
482 parallel ausgef@"uhrt. Wenn @code{V} kein Atom ist, wird anstatt einer
483 Zuweisung eine Substitution ausgef@"uhrt.
486 @code{F}, wobei @code{F} der Name einer Funktion ist, die als eine
487 Auswertungsfunktion (siehe @mref{evfun}) definiert wurde. @code{F} bewirkt,
488 dass die Auswertungsfunktion auf den Ausdruck @var{expr} angewendet wird.
491 Jeder andere Funktionsname (zum Beispiel @code{sum}) bewirkt, dass jedes
492 Auftreten dieser Funktion im Ausdruck @var{expr} ausgewertet wird.
495 Zus@"atzlich kann f@"ur die Auswertung von @var{expr} eine lokale Funktion
496 @code{F(x) := expression} definiert werden.
499 Wird ein Symbol, eine indizierte Variable oder ein indizierter Ausdruck, der
500 oben nicht genannt wurde, als Argument @"ubergeben, wird das Argument
501 ausgewertet. Wenn das Ergebnis eine Gleichung oder eine Zuweisung ist, werden
502 die entsprechenden Zuweisungen und Substitutionen ausgef@"uhrt. Wenn das
503 Ergebnis eine Liste ist, werden die Elemente der Liste als zus@"atzliche
504 Argumente von @code{ev} betrachtet. Dies erlaubt, das eine Liste mit
505 Gleichungen (zum Beispiel @code{[%t1, %t2]}, wobei @code{%t1} und @code{%t2}
506 Gleichungen sind) wie sie zum Beispiel von der Funktion @mref{solve} erzeugt
507 wird, als Argument verwendet werden kann.
510 Die Argumente der Funktion @code{ev} k@"onnen in einer beliebigen Reihenfolge
511 @"ubergeben werden. Ausgenommen sind Gleichungen mit Substitutionen, die
512 nacheinander von links nach rechts ausgewertet werden, sowie
513 Auswertungsfunktionen, die verkettet werden. So wird zum Beispiel
514 @code{ev(@var{expr}, ratsimp, realpart)} zu
515 @code{realpart(ratsimp(@var{expr}))}.
517 Die Schalter @mrefcomma{simp} @mrefcomma{numer} @mref{float} und
518 @mref{detout} sind auch Optionsvariablen, die lokal in einem Block oder global
519 gesetzt werden k@"onnen.
521 Ist @var{expr} ein kanonischer rationaler Ausdruck (CRE = canonical rational
522 expression), ist auch das Ergebnis der Funktion @code{ev} ein CRE-Ausdruck,
523 falls nicht die beiden Schalter @code{float} und @code{numer} den Wert
527 W@"ahrend des Schritts (1) wird eine Liste der nicht indizierten Variablen
528 erstellt, die auf der linken Seite von Gleichungen auftreten. Die Gleichungen
529 k@"onnen dabei entweder als Argument oder als Wert eines Argumentes vorliegen.
530 Variablen, die nicht in dieser Liste enthalten sind, werden durch ihre globalen
531 Werte ersetzt. Davon ausgenommen sind Variablen, die eine Array-Funktion
532 repr@"asentieren. Ist zum Beispiel @var{expr} eine Marke wie @code{%i2} im
533 Beispiel unten oder das letzte Ergebnis @code{%}, so wird in diesem Schritt der
534 globale Wert dieser Marke eingesetzt und die Bearbeitung durch @code{ev}
538 Wenn in den Argumenten Substitutionen aufgef@"uhrt sind, werden diese nun
542 Der resultierende Ausdruck wird erneut ausgewertet, au@ss{}er wenn @code{noeval}
543 unter den Argumente ist, und vereinfacht. Die Funktionsaufrufe in @var{expr}
544 werden erst ausgef@"uhrt, wenn die enthaltenden Variablen ausgewertet sind.
545 Dadurch verh@"alt sich @code{ev(F(x))} wie @code{F(ev(x))}.
548 F@"ur jedes Auftreten des Schalters @code{eval} in den Argumenten werden die
549 Schritte (3) und (4) wiederholt.
552 Anstatt der Anwendung der Funktion @code{ev} k@"onnen alternativ der Ausdruck
553 und die Argumente durch Kommata getrennt eingegeben werden:
556 @var{expr}, @var{arg_1}, ..., @var{arg_n}
559 Diese Kurzschreibweise ist jedoch als Teil eines anderen Ausdrucks, zum Beispiel
560 in Funktionen oder Bl@"ocken nicht gestattet.
566 (%i1) sin(x) + cos(y) + (w+1)^2 + 'diff (sin(w), w);
568 (%o1) cos(y) + sin(x) + -- (sin(w)) + (w + 1)
571 (%i2) ev (%, numer, expand, diff, x=2, y=1);
573 (%o2) cos(w) + w + 2 w + 2.449599732693821
576 Im folgenden Beispiel werden die Zuweisungen parallel durchgef@"uhrt. Es wird
577 die Kurzschreibweise der Funktion @code{ev} angewendet.
580 (%i3) programmode: false;
582 (%i4) x+y, x: a+y, y: 2;
585 (%i6) -3*x + 2*y = -4$
586 (%i7) solve ([%o5, %o6]);
601 (%i9) x + 1/x > gamma (1/2);
603 (%o9) x + - > sqrt(%pi)
605 (%i10) %, numer, x=1/2;
606 (%o10) 2.5 > 1.772453850905516
612 @c --- 07.03.2011 DK -----------------------------------------------------------
614 @defvr {Auswertungsschalter} eval
616 Als Argument des Kommandos @code{ev(expr, eval)} bewirkt @code{eval} eine
617 zus@"atzliche Auswertung des Ausdrucks @code{expr}.
619 @code{eval} kann mehrfach auftreten. Jedes Auftreten f@"uhrt zu einer
620 zus@"atzlichen Auswertung.
622 Siehe auch die Funktion @mref{ev} sowie die Auswertungsschalter
623 @mref{noeval} und @mref{infeval}
628 (%i1) [a:b,b:c,c:d,d:e];
641 @c --- 07.03.2011 DK -----------------------------------------------------------
643 @defvr {Eigenschaft} evflag
645 Wenn ein Symbol @var{x} die Eigenschaft eines Auswertungsschalters besitzt, sind
646 die Ausdr@"ucke @code{ev(@var{expr}, @var{x})} und @code{@var{expr}, @var{x}}@
647 @"aquivalent zu @code{ev(@var{expr}, @var{x} = true)}. W@"ahrend der Auswertung
648 von @var{expr} erh@"alt also @var{x} den Wert @code{true}.
650 Mit @code{declare(@var{x}, evflag)} wird der Variablen @var{x} die
651 @code{evflag}-Eigenschaft gegeben. Siehe auch die Funktion
652 @mrefdot{declare} Mit @mref{kill} oder @mref{remove} kann diese Eigenschaft
653 wieder entfernt werden. Siehe auch @mref{properties} f@"ur die Anzeige von
656 Folgende Optionsvariablen haben bereits die @code{evflag}-Eigenschaft:
659 algebraic cauchysum demoivre
660 dotscrules %emode %enumer
661 exponentialize exptisolate factorflag
662 float halfangles infeval
663 isolate_wrt_times keepfloat letrat
664 listarith logabs logarc
666 m1pbranch numer_pbranch programmode
667 radexpand ratalgdenom ratfac
668 ratmx ratsimpexpons simp
669 simpproduct simpsum sumexpand
680 (%i2) sin (1/2), float;
681 (%o2) 0.479425538604203
682 (%i3) sin (1/2), float=true;
683 (%o3) 0.479425538604203
693 (%i8) sum (1/k^2, k, 1, inf);
702 (%i9) sum (1/k^2, k, 1, inf), simpsum;
707 (%i10) declare (aa, evflag);
709 (%i11) if aa = true then YES else NO;
711 (%i12) if aa = true then YES else NO, aa;
716 @c --- 07.03.2011 DK -----------------------------------------------------------
718 @defvr {Eigenschaft} evfun
720 Wenn eine Funktion @var{F} die Eigenschaft @code{evfun} besitzt, sind die
721 Ausdr@"ucke @code{ev(@var{expr}, @var{F})} und @code{@var{expr}, @var{F}}@
722 @"aquivalent zu @code{@var{F}(ev(@var{expr}))}.
724 Zwei oder mehr @code{evfun}-Funktionen @var{F}, @var{G}, @dots{} werden in der
725 aufgef@"uhrten Reihenfolge auf den Ausdruck @var{expr} angewendet.
727 Mit @code{declare(@var{F}, evfun)} wird der Funktion @var{F} die
728 @code{evfun}-Eigenschaft gegeben. Siehe auch die Funktion @mrefdot{declare}@w{}
729 Mit @mref{kill} oder @mref{remove} kann diese Eigenschaft wieder entfernt
730 werden. Siehe auch @mref{properties} f@"ur die Anzeige von Eigenschaften.
732 Funktionen, die bereits die @code{evfun}-Eigenschaft besitzen, sind:
735 bfloat factor fullratsimp
736 logcontract polarform radcan
737 ratexpand ratsimp rectform
738 rootscontract trigexpand trigreduce
747 (%i2) x^3 - 1, factor;
750 (%o2) (x - 1) (x + x + 1)
752 (%i3) factor (x^3 - 1);
754 (%o3) (x - 1) (x + x + 1)
755 (%i4) cos(4 * x) / sin(x)^4;
760 (%i5) cos(4 * x) / sin(x)^4, trigexpand;
762 sin (x) - 6 cos (x) sin (x) + cos (x)
763 (%o5) -------------------------------------
766 (%i6) cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
770 (%o6) - --------- + ------- + 1
774 (%i7) ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
777 (%o7) - --------- + ------- + 1
780 (%i8) declare ([F, G], evfun);
782 (%i9) (aa : bb, bb : cc, cc : dd);
794 (%i15) G (F (ev (aa)));
799 @c --- 07.03.2011 DK -----------------------------------------------------------
802 @defvr {Optionsvariable} infeval
803 Standardwert: @code{false}
805 @code{infeval} bewirkt, dass die Funktion @mref{ev} die Auswertung eines
806 Ausdrucks solange wiederholt, bis dieser sich nicht mehr @"andert. Um zu
807 verhindern, dass eine Variable in diesem Modus durch die Auswertung
808 verschwindet, kann zum Beispiel f@"ur eine Variable @code{x} der Ausdruck
809 @code{x='x} als Argument von @code{ev} einf@"ugt werden. Ausdr@"ucke wie
810 @code{ev(x, x=x+1, infeval)} f@"uhren in diesem Modus zu Endlosschleifen.
812 Siehe auch die Auswertungsschalter @mref{noeval} und @mrefdot{eval}
815 @c --- 07.03.2011 DK -----------------------------------------------------------
817 @defvr {Auswertungsschalter} noeval
819 @code{noeval} unterdr@"uckt die Auswertungsphase der Funktion @mrefdot{ev}@w{}
820 Der Schalter kann im Zusammenhang mit anderen Auswertungsschaltern genutzt
821 werden, um einen Ausdruck erneut zu vereinfachen, ohne diesen auszuwerten.
823 Siehe auch die Optionsvariable @mref{infeval} und den Auswertungsschalter
827 @c --- 07.03.2011 DK -----------------------------------------------------------
829 @defvr {Auswertungsschalter} nouns
831 @code{nouns} ist ein Auswertungsschalter. Wird dieser Schalter als eine Option
832 der Funktion @mref{ev} genutzt, werden alle Substantivformen, die in dem
833 Ausdruck enthalten sind, in Verbformen umgewandelt und ausgewertet.
835 Siehe auch die Eigenschaft @mref{noun} und die Funktionen @mref{nounify} und
839 @c --- 07.03.2011 DK -----------------------------------------------------------
841 @defvr {Auswertungsschalter} pred
843 Wird @code{pred} als ein Argument der Funktion @code{ev} eingesetzt, werden
844 Aussagen zu @code{true} oder @code{false} ausgewertet. Siehe die Funktion
857 @c --- End of file Evaluation.de.texi ------------------------------------------