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