1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020
|
@c -----------------------------------------------------------------------------
@c File : Simplification.de.texi
@c License : GNU General Public License (GPL)
@c Language : German
@c Original : Simplification.texi revision 1.27
@c Translation : Dr. Dieter Kaiser
@c Date : 17.10.2010
@c Revision : 11.05.2011
@c
@c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
@c -----------------------------------------------------------------------------
@menu
* Einf@"uhrung in die Vereinfachung::
* Funktionen und Variablen f@"ur die Vereinfachung::
@end menu
@c -----------------------------------------------------------------------------
@node Einf@"uhrung in die Vereinfachung, Funktionen und Variablen f@"ur die Vereinfachung, Vereinfachung, Vereinfachung
@section Einf@"uhrung in die Vereinfachung
@c -----------------------------------------------------------------------------
Nach der Auswertung einer Eingabe, die in @ref{Auswertung} beschrieben ist,
schlie@ss{}t sich die Vereinfachung eines Ausdrucks an. Mathematische
Funktionen mit denen symbolisch gerechnet werden kann, werden nicht ausgewertet,
sondern vereinfacht. Mathematische Funktionen werden intern von Maxima in einer
Substantivform dargestellt. Auch Ausdr@"ucke mit den arithmetischen Operatoren
werden vereinfacht. Numerische Rechnungen wie die Addition oder Multiplikation
sind daher keine Auswertung, sondern eine Vereinfachung. Die Auswertung eines
Ausdrucks kann mit dem @mxref{', Quote-Operator} @code{'} unterdr@"uckt werden.
Entsprechend kann die Vereinfachung eines Ausdrucks mit der Optionsvariablen
@mref{simp} kontrolliert werden.
Beispiele:
Im ersten Beispiel wird die Auswertung mit dem Quote-Operator unterdr@"uckt.
Das Ergebnis ist eine Substantivform f@"ur die Ableitung. Im zweiten Beispiel
ist die Vereinfachung unterdr@"uckt. Die Ableitung wird ausgef@"uhrt, da es
sich um eine Auswertung handelt. Das Ergebnis wird jedoch nicht zu @code{2*x}
vereinfacht.
@example
(%i1) 'diff(x*x,x);
d 2
(%o1) -- (x )
dx
(%i2) simp:false;
(%o2) false
(%i3) diff(x*x,x);
(%o3) 1 x + 1 x
@end example
F@"ur jede mathematischen Funktion oder Operator hat Maxima intern eine eigene
Routine, die f@"ur die Vereinfachung aufgerufen wird, sobald die Funktion oder
der Operator in einem Ausdruck auftritt. Diese Routinen implementieren
Symmetrieeigenschaften, spezielle Funktionswerte oder andere Eigenschaften und
Regeln. Mit einer Vielzahl von Optionsvariablen kann Einfluss auf die
Vereinfachung der Funktionen und Operatoren genommen werden.
Beispiel:
Die Vereinfachung der Exponentialfunktion @mref{exp} wird von den folgenden
Optionsvariablen kontrolliert: @mrefcomma{%enumer} @mrefcomma{%emode}@w{}
@mrefcomma{%e_to_numlog} @mrefcomma{radexpand} @mrefcomma{logsimp} und
@mrefdot{demoivre} Im ersten Beispiel wird der Ausdruck mit der
Exponentialfunktion nicht vereinfacht. Im zweiten Beispiel vereinfacht
Maxima ein Argument @code{%i*%pi/2}.
@example
(%i1) exp(x+%i*%pi/2), %emode:false;
%i %pi
x + ------
2
(%o1) %e
(%i2) exp(x+%i*%pi/2), %emode:true;
x
(%o2) %i %e
@end example
Zus@"atzlich zu der Vereinfachung von einzelnen mathematischen Funktionen und
Operatoren, die automatisch von Maxima ausgef@"uhrt werden, kennt Maxima
Funktionen wie @mref{expand} oder @mrefcomma{radcan} die auf Ausdr@"ucke
angewendet werden, um spezielle Vereinfachungen vorzunehmen.
Beispiel:
@example
(%i1) (log(x+x^2)-log(x))^a/log(1+x)^(a/2);
2 a
(log(x + x) - log(x))
(%o1) -----------------------
a/2
log(x + 1)
(%i2) radcan(%);
a/2
(%o2) log(x + 1)
@end example
Einem Operator oder einer Funktion k@"onnen Eigenschaften wie linear oder
symmetrisch gegeben werden. Maxima ber@"ucksichtigt diese Eigenschaften bei der
Vereinfachung eines Ausdrucks. Zum Beispiel wird mit dem Kommando
@code{declare(f, oddfun)} eine Funktion als ungerade definiert. Maxima
vereinfacht dann jedes Auftreten eines Ausdrucks @code{f(-x)} zu @code{-f(x)}.
Entsprechend vereinfacht Maxima @code{f(-x)} zu @code{f(x)}, wenn die Funktion
als gerade definiert wurde.
Die folgenden Eigenschaften sind in der Liste @mref{opproperties} enthalten und
kontrollieren die Vereinfachung von Funktionen und Operatoren:
@verbatim
additive lassociative oddfun
antisymmetric linear outative
commutative multiplicative rassociative
evenfun nary symmetric
@end verbatim
Dar@"uber hinaus haben auch die Fakten und die Eigenschaften des aktuellen
Kontextes Einfluss auf die Vereinfachung von Ausdr@"ucken. Siehe dazu die
Ausf@"uhrungen in @ref{Maximas Datenbank}.
Beispiel:
Die Sinusfunktion vereinfacht f@"ur ein ganzzahliges Vielfaches von @code{%pi}
zum Wert @code{0}. Erh@"alt das Symbol @code{n} die Eigenschaft @code{integer},
wird die Sinusfunktion entsprechend vereinfacht.
@example
(%i1) sin(n*%pi);
(%o1) sin(%pi n)
(%i2) declare(n, integer);
(%o2) done
(%i3) sin(n*%pi);
(%o3) 0
@end example
F@"uhren alle oben genannten M@"oglichkeiten nicht zu dem gew@"unschten
Ergebnis, kann der Nutzer Maxima um weitere Regeln f@"ur die Vereinfachung
erweitern. Diese M@"oglichkeiten werden in @ref{Muster und Regeln} erl@"autert.
@c -----------------------------------------------------------------------------
@node Funktionen und Variablen f@"ur die Vereinfachung, , Einf@"uhrung in die Vereinfachung, Vereinfachung
@section Funktionen und Variablen f@"ur die Vereinfachung
@c -----------------------------------------------------------------------------
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{additive}
@defvr {Eigenschaft} additive
@code{declare(f, additive)} deklariert eine Funktion @code{f} als additiv. Hat
die Funktion @code{f} ein Argument, dann wird @code{f(x + y)} zu
@code{f(x) + f(y)} vereinfacht.
Ist @code{f} eine Funktion mit zwei oder mehr Argumenten, ist die
Additivit@"at f@"ur das erste Argument definiert. Zum Beispiel wird
@code{f(x + y,a + b)} zu @code{f(y, b + a) + f(x, b + a)} vereinfacht.
Siehe die Funktion @mrefdot{declare}
Beispiel:
@example
(%i1) F3 (a + b + c);
(%o1) F3(c + b + a)
(%i2) declare (F3, additive);
(%o2) done
(%i3) F3 (a + b + c);
(%o3) F3(c) + F3(b) + F3(a)
@end example
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{antisymmetric}
@defvr {Eigenschaft} antisymmetric
@code{declare(f, antisymmetric)} deklariert die Funktion @code{f} als
antisymmetrisch. Zum Beispiel wird @code{f(y, x)} zu @code{- f(x, y)}
vereinfacht.
Siehe auch die Eigenschaft @mref{symmetric} und die Funktion @mrefdot{declare}
Beispiel:
@example
(%i1) S (b, a);
(%o1) S(b, a)
(%i2) declare (T, antisymmetric);
(%o2) done
(%i3) T (b, a);
(%o3) - T(a, b)
(%i4) T (a, c, e, d, b);
(%o4) T(a, b, c, d, e)
@end example
@end defvr
@c --- 11.12.2010 DK -----------------------------------------------------------
@anchor{combine}
@deffn {Funktion} combine (@var{expr})
Terme einer rationalen Funktion, die denselben Nenner haben, werden
zusammengefasst.
Beispiel:
@example
(%i1) x^2/(1+x)+2*x/(1+x);
2
x 2 x
(%o1) ----- + -----
x + 1 x + 1
(%i2) combine(%);
2
x + 2 x
(%o2) --------
x + 1
@end example
@end deffn
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{commutative}
@defvr {Eigenschaft} commutative
@code{declare(f, commutative)} deklariert die Funktion @code{f} als kommutativ.
Zum Beispiel wird @code{f(x, z, y)} zu @code{f(x, y, z)} vereinfacht.
Dies hat denselben Effekt wie die Deklaration @mrefdot{symmetric}
Siehe auch die Funktion @mrefdot{declare}
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{demoivre}
@deffn {Funktion} demoivre (@var{expr})
@deffnx {Optionsvariable} demoivre
Die Funktion @code{demoivre(expr)} konvertiert den Ausdruck @var{expr}, ohne
die Optionsvariable @code{demoivre} zu setzen.
Hat die Optionsvariable @code{demoivre} den Wert @code{true}, werden komplexe
Exponentialfunktionen in @"aquivalente Kreisfunktionen umgewandelt.
@code{exp(a + b*%i)} wird zu @code{%e^a*(cos(b)+%i*sin(b))} vereinfacht,
wenn @code{b} frei von der imagin@"aren Einheit @code{%i} ist. @code{a} und
@code{b} werden nicht expandiert.
Der Standardwert von @code{demoivre} ist @code{false}.
Siehe auch die Funktion @mrefcomma{exponentialize} um trigonometrische und
hyperbolische Funktionen in eine Exponentialform zu konvertieren.
@code{demoivre} und @code{exponentialize} k@"onnen nicht gleichzeitig den Wert
@code{true} haben.
@end deffn
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{function_distrib}
@deffn {Funktion} distrib (@var{expr})
Summen werden ausmultipliziert. Im Unterschied zu der Funktion
@mref{expand} wird @code{distrib} nur auf der obersten Ebene eines Ausdruckes
angewendet und ist daher schneller als @code{expand}. Im Unterschied zu der
Funktion @mref{multthru} werden die Summen der obersten Ebenen vollst@"andig
ausmultipliziert.
Beispiele:
@example
(%i1) distrib ((a+b) * (c+d));
(%o1) b d + a d + b c + a c
(%i2) multthru ((a+b) * (c+d));
(%o2) (b + a) d + (b + a) c
(%i3) distrib (1/((a+b) * (c+d)));
1
(%o3) ---------------
(b + a) (d + c)
(%i4) expand (1/((a+b) * (c+d)), 1, 0);
1
(%o4) ---------------------
b d + a d + b c + a c
@end example
@end deffn
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{distribute_over}
@defvr {Optionsvariable} distribute_over
Standardwert: @code{true}
Die Optionsvariable @code{distribute_over} kontrolliert die Anwendung von
Funktionen auf Listen, Matrizen oder Gleichungen. Diese Eigenschaft wird nicht
angewendet, wenn @code{distribute_over} den Wert @code{false} hat.
Beispiele:
Die Funktion @mref{sin} wird auf eine Liste angewendet.
@example
(%i1) sin([x,1,1.0]);
(%o1) [sin(x), sin(1), .8414709848078965]
@end example
Die Funktion @mref{mod} hat zwei Argumente, die auf Listen angewendet werden
kann. Die Funktion kann auch auf verschachtelte Listen angewendet werden.
@example
(%i2) mod([x,11,2*a],10);
(%o2) [mod(x, 10), 1, 2 mod(a, 5)]
(%i3) mod([[x,y,z],11,2*a],10);
(%o3) [[mod(x, 10), mod(y, 10), mod(z, 10)], 1, 2 mod(a, 5)]
@end example
Anwendung der Funktion @mref{floor} auf eine Matrix und eine Gleichung.
@example
(%i4) floor(matrix([a,b],[c,d]));
[ floor(a) floor(b) ]
(%o4) [ ]
[ floor(c) floor(d) ]
(%i5) floor(a=b);
(%o5) floor(a) = floor(b)
@end example
Funktionen mit mehreren Argumenten k@"onnen auf Listen f@"ur eines der Argumente
oder alle Argumente angewendet werden.
@example
(%i6) expintegral_e([1,2],[x,y]);
(%o6) [[expintegral_e(1, x), expintegral_e(1, y)],
[expintegral_e(2, x), expintegral_e(2, y)]]
@end example
@end defvr
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{domain}
@defvr {Optionsvariable} domain
Standardwert: @code{real}
Hat @code{domain} den Wert @code{complex}, wird @code{sqrt(x^2)} nicht zu
@code{abs(x)} vereinfacht.
@end defvr
@c --- 06.02.2011 DK -----------------------------------------------------------
@anchor{evenfun}
@anchor{oddfun}
@defvr {Eigenschaft} evenfun
@defvrx {Eigenschaft} oddfun
Erh@"alt eine Funktion oder ein Operator mit der Funktion @mref{declare} die
Eigenschaft @code{evenfun} oder @code{oddfun} wird die Funktion oder der
Operator von Maxima als gerade und ungerade interpretiert. Diese Eigenschaft
wird bei der Vereinfachung von Ausdr@"ucken von Maxima angewendet.
Beispiele:
@example
(%i1) o (- x) + o (x);
(%o1) o(x) + o(- x)
(%i2) declare (o, oddfun);
(%o2) done
(%i3) o (- x) + o (x);
(%o3) 0
(%i4) e (- x) - e (x);
(%o4) e(- x) - e(x)
(%i5) declare (e, evenfun);
(%o5) done
(%i6) e (- x) - e (x);
(%o6) 0
@end example
@end defvr
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expand}
@deffn {Funktion} expand (@var{expr})
@deffnx {Funktion} expand (@var{expr}, @var{p}, @var{n})
Expandiert den Ausdruck @var{expr}. Produkte von Summen und Potenzen von Summen
werden ausmultipliziert. Die Nenner von rationalen Ausdr@"ucken, die Summen
sind, werden in ihre Terme aufgespalten. Produkte (kommutative und
nicht-kommutative) werden in Summen herein multipliziert.
F@"ur Polynome ist es besser, die Funktion @mref{ratexpand} zu verwenden, welche
f@"ur diesen Fall einen effizienteren Algorithmus hat.
@mref{maxnegex} und @mref{maxposex} kontrollieren den maximalen negativen und
positiven Exponenten, f@"ur die ein Ausdruck expandiert wird.
@code{expand(@var{expr}, @var{p}, @var{n})} expandiert @var{expr}, wobei
@code{maxposex} den Wert @var{p} und @code{maxnegex} den Wert @var{n} erhalten.
@mref{expon} ist der gr@"o@ss{}te negative Exponent, f@"ur den ein Ausdruck
automatisch expandiert wird. Hat zum Beispiel @code{expon} den Wert 4, wird
@code{(x+1)^(-5)} nicht automatisch expandiert.
@mref{expop} ist der gr@"o@ss{}te positive Exponent, f@"ur den ein Ausdruck
automatisch expandiert wird. So wird @code{(x+1)^3} dann automatisch
expandiert, wenn @code{expop} gr@"o@ss{}er oder gleich 3 ist. Soll
@code{(x+1)^n} mit der Funktion @code{expand} expandiert werden, weil @code{n}
gr@"o@ss{}er als @code{expop} ist, dann ist dies nur m@"oglich, wenn @code{n}
kleiner als @code{maxposex} ist.
@code{expand(expr,0,0)} bewirkt eine erneuerte vollst@"andige Vereinfachung
des Ausdrucks @var{expr}. Der Ausdruck wird nicht erneuert ausgewertet. Im
Unterschied zum Kommando @code{ev(expr, noeval)} wird eine spezielle Darstellung
(zum Beispiel eine CRE-Form) nicht entfernt. Siehe auch @mref{resimplify} und
@mrefdot{ev}
Das @code{expand}-Flag wird mit @code{ev} verwendet, um einen Ausdruck zu
expandieren.
Die Datei @file{simplification/facexp.mac} enth@"alt weitere Funktionen wie
@mrefcomma{facsum} @mref{factorfacsum} und @mref{collectterms} und Variablen wie
@mref{nextlayerfactor} und @mref{facsum_combine}, um Ausdr@"ucke zu
vereinfachen. Diese Funktionen werden automatisch geladen und erlauben
spezielle Expansionen von Ausdr@"ucken. Eine kurze Beschreibung ist in der
Datei @file{simplification/facexp.usg} enthalten. Eine Demo kann mit
@code{demo(facexp)} ausgef@"uhrt werden.
Beispiele:
@example
(%i1) expr:(x+1)^2*(y+1)^3;
2 3
(%o1) (x + 1) (y + 1)
(%i2) expand(expr);
2 3 3 3 2 2 2 2 2
(%o2) x y + 2 x y + y + 3 x y + 6 x y + 3 y + 3 x y
2
+ 6 x y + 3 y + x + 2 x + 1
(%i3) expand(expr,2);
2 3 3 3
(%o3) x (y + 1) + 2 x (y + 1) + (y + 1)
(%i4) expr:(x+1)^-2*(y+1)^3;
@group
3
(y + 1)
(%o4) --------
2
(x + 1)
@end group
(%i5) expand(expr);
3 2
y 3 y 3 y 1
(%o5) ------------ + ------------ + ------------ + ------------
2 2 2 2
x + 2 x + 1 x + 2 x + 1 x + 2 x + 1 x + 2 x + 1
(%i6) expand(expr, 2, 2);
3
(y + 1)
(%o6) ------------
2
x + 2 x + 1
@end example
Vereinfache einen Ausdruck erneut:
@example
(%i7) expr:(1+x)^2*sin(x);
2
(%o7) (x + 1) sin(x)
(%i8) exponentialize:true;
(%o8) true
(%i9) expand(expr, 0, 0);
2 %i x - %i x
%i (x + 1) (%e - %e )
(%o9) - -------------------------------
2
@end example
@end deffn
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expandwrt}
@deffn {Funktion} expandwrt (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
Expandiert den Ausdruck @code{expr} in Bezug auf die Variablen @var{x_1},
@dots{}, @var{x_n}. Alle Produkte, die die Variablen enthalten, werden
ausmultipliziert. Das Ergebnis ist frei von Produkten von Summen, die nicht
frei von den Variablen sind. @var{x_1}, @dots{}, @var{x_n} k@"onnen Variable,
Operatoren oder Ausdr@"ucke sein.
Standardm@"a@ss{}ig wird der Nenner eines rationalen Ausdrucks nicht expandiert.
Dies kann mit der Optionsvariablen @mref{expandwrt_denom} kontrolliert werden.
Die Funktion wird automatisch aus der Datei @file{simplification/stopex.mac}
geladen.
@end deffn
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expandwrt_denom}
@defvr {Optionsvariable} expandwrt_denom
Standardwert: @code{false}
@code{expandwrt_denom} kontrolliert die Behandlung von rationalen Ausdr@"ucken
durch die Funktion @code{expandwrt}. Ist der Wert @code{true}, werden der
Z@"ahler und der Nenner eines rationalen Ausdrucks expandiert. Ist der Wert
@code{false}, wird allein der Z@"ahler expandiert.
@end defvr
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expandwrt_factored}
@deffn {Funktion} expandwrt_factored (@var{expr}, @var{x_1}, @dots{}, @var{x_n})
Ist vergleichbar mit der Funktion @mref{expandwrt}, behandelt aber Ausdr@"ucke
verschieden, die Produkte enthalten. @code{expandwrt_factored} expandiert nur
die Faktoren im Ausdruck @code{expr}, die die Variablen @var{x_1}, @dots{},
@var{x_n} enthalten.
@end deffn
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expon}
@defvr {Optionsvariable} expon
Standardwert: 0
@code{expon} ist der gr@"o@ss{}te negative Exponent f@"ur den ein Ausdruck
automatisch expandiert wird. Hat zum Beispiel @code{expon} den Wert 4, wird
@code{(x+1)^(-5)} nicht automatisch expandiert. Siehe auch @mrefdot{expop}
@end defvr
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{exponentialize}
@deffn {Funktion} exponentialize (@var{expr})
@deffnx {Optionsvariable} exponentialize
Die Funktion @code{exponentialize} konvertiert trigonometrische und
hyperbolische Funktion die in dem Ausdruck @var{expr} auftreten in
Exponentialfunktionen, ohne dass die Optionsvariable @code{exponentialize}
gesetzt wird.
Hat die Optionsvariable @code{exponentialize} den Wert @code{true}, werden
trigonometrische und hyperbolischen Funktionen in eine Exponentialform
konvertiert. Der Standardwert ist @code{false}.
@mref{demoivre} konvertiert komplexe Exponentialfunktionen in trigonometrische
und hyperbolische Funktionen. @code{exponentialize} und @code{demoivre}
k@"onnen nicht gleichzeitig den Wert @code{true} haben.
@end deffn
@c --- 17.10.2010 DK -----------------------------------------------------------
@anchor{expop}
@defvr {Optionsvariable} expop
Standardwert: 0
@code{expop} ist der gr@"o@ss{}te positive Exponent, f@"ur den ein Ausdruck
automatisch expandiert wird. So wird @code{(x+1)^3} dann automatisch
expandiert, wenn @code{expop} gr@"o@ss{}er oder gleich 3 ist. Soll
@code{(x+1)^n} mit der Funktion @mref{expand} expandiert werden, weil @code{n}
gr@"o@ss{}er als @code{expop} ist, dann ist dies nur m@"oglich, wenn @code{n}
kleiner als @mref{maxposex} ist. Siehe auch @mrefdot{expon}
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{lassociative}
@defvr {Eigenschaft} lassociative
@code{declare(f, lassociative)} deklariert @code{f} als eine links-assoziative
Funktion. Zum Beispiel wird @code{f (f (a,b), f (c, d))} zu
@code{f (f (f (a, b), c), d)} vereinfacht.
Siehe auch die Eigenschaft @mref{rassociative} und die Funktion
@mrefdot{declare}
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{linear}
@defvr {Eigenschaft} linear
@code{declare(f, linear)} deklariert die Funktion @code{f} als linear.
Hat die Funktion @code{f} ein Argument, dann wird @code{f(x + y)} zu
@code{f(x) + f(y)} und @code{f(a*x)} zu @code{a*f(x)} vereinfacht.
Ist @code{f} eine Funktion mit zwei oder mehr Argumenten, ist die
Linearit@"at f@"ur das erste Argument definiert. Zum Beispiel wird
@code{f(a*x + b, x)} zu @code{a f(x, x) + f(1, x) b} vereinfacht.
@code{linear} ist @"aquivalent zu @mref{additive} und @mrefdot{outative} Siehe
auch @mref{opproperties} und die Funktion @mrefdot{declare}
@need 800
Beispiel:
@example
(%i1) 'sum (F(k) + G(k), k, 1, inf);
inf
====
\
(%o1) > (G(k) + F(k))
/
====
k = 1
(%i2) declare (nounify (sum), linear);
(%o2) done
(%i3) 'sum (F(k) + G(k), k, 1, inf);
inf inf
==== ====
\ \
(%o3) > G(k) + > F(k)
/ /
==== ====
k = 1 k = 1
@end example
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{maxnegex}
@defvr {Optionsvariable} maxnegex
Standardwert: 1000
@code{maxnegex} ist der gr@"o@ss{}te negative Exponent, der von der Funktion
@mref{expand} exandieren wird. Siehe auch @mrefdot{maxposex}
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{maxposex}
@defvr {Optionsvariable} maxposex
Standardwert: 1000
@code{maxposex} ist der gr@"o@ss{}te positive Exponent, der von der Funktion
@mref{expand} expandiert wird. Siehe auch @mrefdot{maxnegex}
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{multiplicative}
@defvr {Eigenschaft} multiplicative
@code{declare(f, multiplicative)} deklariert die Funktion @code{f} als
multiplikativ.
Hat die Funktion @code{f} ein Argument, dann wird @code{f(x*y)} zu
@code{f(x)*f(y)} vereinfacht.
Ist @code{f} eine Funktion mit zwei oder mehr Argumenten, ist die
Multiplikativit@"at f@"ur das erste Argument definiert. Zum Beispiel wird
@code{f(a*x + b, x)} zu @code{f(g(x), x)*f(h(x), x)} vereinfacht.
Diese Vereinfachung werden nicht f@"ur Ausdr@"ucke der Form
@code{product(x[i], i, m, n)} ausgef@"uhrt.
Siehe auch die Funktion @mrefdot{declare}
Beispiel:
@example
(%i1) F2 (a * b * c);
(%o1) F2(a b c)
(%i2) declare (F2, multiplicative);
(%o2) done
(%i3) F2 (a * b * c);
(%o3) F2(a) F2(b) F2(c)
@end example
@end defvr
@c -----------------------------------------------------------------------------
@anchor{multthru}
@deffn {Funktion} multthru (@var{expr})
@deffnx {Funktion} multthru (@var{expr_1}, @var{expr_2})
Multipliziert einen oder mehrere Faktoren in eine Summe herein. @code{multthru}
expandiert keine Potenzen von Summen. @code{multthru} ist die effizienteste
Methode, um Produkte von Summen auszumultiplizieren. Da Maxima intern die
Division als ein Produkt darstellt, kann @code{multthru} auch angewendet werden,
um einen Nenner in eine Summe hereinzumultiplizieren.
@code{multthru(@var{expr_1}, @var{expr_2})} multipliziert jeden Term des
Ausdrucks @var{expr_2} mit @var{expr_1}. Der Ausdruck @var{expr_2} kann dabei
eine Summe oder eine Gleichung sein.
Siehe auch die Funktionen @mref{expand} und @mrefdot{function_distrib}
@example
(%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1 x f(x)
(%o1) - ----- + -------- - --------
x - y 2 3
(x - y) (x - y)
(%i2) multthru ((x-y)^3, %);
2
(%o2) - (x - y) + x (x - y) - f(x)
(%i3) ratexpand (%);
2
(%o3) - y + x y - f(x)
(%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
10 2 2 2
(b + a) s + 2 a b s + a b
(%o4) ------------------------------
2
a b s
(%i5) multthru (%); /* note that this does not expand (b+a)^10 */
10
2 a b (b + a)
(%o5) - + --- + ---------
s 2 a b
s
(%i6) multthru (a.(b+c.(d+e)+f));
(%o6) a . f + a . c . (e + d) + a . b
(%i7) expand (a.(b+c.(d+e)+f));
(%o7) a . f + a . c . e + a . c . d + a . b
@end example
@end deffn
@c --- 06.02.2011 DK -----------------------------------------------------------
@anchor{property_nary}
@defvr {Eigenschaft} nary
Erh@"alt eine Funktion oder ein Operator mit der Funktion @mref{declare} die
Eigenschaft @code{nary}, werden verschachtelte Anwendungen der Funktion oder des
Operators wie zum Beispiel @code{foo(x, foo(y, z))} zu @code{foo(x, y, z)}
vereinfacht. Die Deklaration als @code{nary} unterscheidet sich
von der Funktion @code{nary}. W@"ahrend der Funktionsaufruf einen neuen
Operator definiert, wirkt sich die Deklaration nur auf die Vereinfachung aus.
Beispiel:
@example
(%i1) H (H (a, b), H (c, H (d, e)));
(%o1) H(H(a, b), H(c, H(d, e)))
(%i2) declare (H, nary);
(%o2) done
(%i3) H (H (a, b), H (c, H (d, e)));
(%o3) H(a, b, c, d, e)
@end example
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{negdistrib}
@defvr {Optionsvariable} negdistrib
Standardwert: @code{true}
Hat @code{negdistrib} den Wert @code{true}, wird die Zahl -1 in eine Summe
hereinmultipliziert. Zum Beispiel wird @code{-(x + y)} zu @code{- y - x}
vereinfacht. @code{true} ist der Standardwert von @code{negdistrib}.
Erh@"alt @code{negdistrib} den Wert @code{false} wird @code{-(x + y)}
nicht vereinfacht. @code{negdistrib} sollte sehr umsichtig und nur in
speziellen F@"allen f@"ur lokale Vereinfachungen genutzt werden.
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{opproperties}
@defvr {Systemvariable} opproperties
@code{opproperties} ist eine Liste mit den Eigenschaften, die eine Funktion oder
ein Operator erhalten kann und die die Vereinfachung der Funktionen und
Operatoren kontrollieren. Diese Eigenschaften erhalten die Funktionen und
Operatoren mit der Funktion @mrefdot{declare} Es gibt weitere Eigenschaften,
die Funktionen, Operatoren und Variablen erhalten k@"onnen. Die Systemvariable
@mref{features} enth@"alt eine vollst@"andige Liste der Eigenschaften, die in
Maximas Datenbank eingetragen werden. Dar@"uberhinaus k@"onnen mit der Funktion
@code{declare} noch Eigenschaften definiert werden, die in der
Lisp-Eigenschaftsliste eingetragen werden.
Die folgenden Eigenschaften sind in der Liste @code{opproperties} enthalten und
kontrollieren die Vereinfachung von Funktionen und Operatoren:
@verbatim
linear additive multiplicative
outative commutative symmetric
antisymmetric nary lassociativ
rassociative evenfun oddfun
@end verbatim
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{outative}
@defvr {Eigenschaft} outative
@code{declare(f, outative)} deklariert eine Funktion @code{f} als outative.
Hat der Operator oder die Funktion Argumente mit konstanten Faktoren, so werden
diese konstanten Faktoren herausgezogen.
Hat die Funktion @code{f} ein Argument, dann wird @code{f(a*x)} zu
@code{a*f(x)} vereinfacht, wenn @code{a} ein konstanter Faktor ist.
Ist @code{f} eine Funktion mit zwei oder mehr Argumenten, ist die
Outativit@"at f@"ur das erste Argument definiert. Zum Beispiel wird
@code{f(a*g(x), x)} zu @code{a*f(g(x),x)} vereinfacht, wenn @code{a} ein
konstanter Faktor ist.
Die Funktionen @mrefcomma{sum} @mref{integrate} und @mref{limit} haben die
Eigenschaft @code{outative}. Siehe auch die Funktion @mrefdot{declare}
Beispiel:
@example
(%i1) F1 (100 * x);
(%o1) F1(100 x)
(%i2) declare (F1, outative);
(%o2) done
(%i3) F1 (100 * x);
(%o3) 100 F1(x)
(%i4) declare (zz, constant);
(%o4) done
(%i5) F1 (zz * y);
(%o5) zz F1(y)
@end example
@end defvr
@c --- 18.02.2011 DK -----------------------------------------------------------
@anchor{radcan}
@deffn {Funktion} radcan (@var{expr})
@c Simplifies @var{expr}, which can contain logs, exponentials, and radicals, by
@c converting it into a form which is canonical over a large class of
@c expressions and a given ordering of variables; that is, all functionally
@c equivalent forms are mapped into a unique form. For a somewhat larger class
@c of expressions, @code{radcan} produces a regular form. Two equivalent
@c expressions in this class do not necessarily have the same appearance, but
@c their difference can be simplified by @code{radcan} to zero.
@c For some expressions @code{radcan} is quite time consuming. This is the cost
@c of exploring certain relationships among the components of the expression for
@c simplifications based on factoring and partial-fraction expansions of
@c exponents.
@c TODO: AUSFUEHRLICHER FORMULIEREN.
Die Funktion @code{radcan} vereinfacht Ausdr@"ucke, die die Logarithmusfunktion,
Exponentialfunktionen und Wurzeln enthalten.
Beispiele:
@example
(%i1) radcan((log(x+x^2)-log(x))^a/log(1+x)^(a/2));
a/2
(%o1) log(x + 1)
(%i2) radcan((log(1+2*a^x+a^(2*x))/log(1+a^x)));
(%o2) 2
(%i3) radcan((%e^x-1)/(1+%e^(x/2)));
x/2
(%o3) %e - 1
@end example
@end deffn
@c --- 12.11.2010 DK -----------------------------------------------------------
@anchor{radexpand}
@defvr {Optionsvariable} radexpand
Standardwert: @code{true}
@c TODO: DIE DOKUMENTATION IST SO NICHT ZUTREFFEND.
@code{radexpand} kontrolliert die Vereinfachung von Wurzeln.
Hat @code{radexpand} den Wert @code{all}, werden die nten-Wurzeln der Faktoren
eines Produktes, die eine n-te Potenz sind, aus der Wurzel herausgezogen. Zum
Beispiel vereinfacht @code{sqrt(16*x^2} zu @code{4*x}.
Inbesondere vereinfacht der Ausdruck @code{sqrt(x^2)} folgenderma@ss{}en:
@itemize @bullet
@item
Hat @code{radexpand} den Wert @code{all} oder wurde @code{assume(x>0)}
ausgef@"uhrt, dann vereinfacht @code{sqrt(x^2)} zu @code{x}.
@item
Hat @code{radexpand} den Wert @code{true} und @mref{domain} ist @code{real},
dann vereinfacht @code{sqrt(x^2)} zu @code{abs(x)}.
@item
Hat @code{radexpand} den Wert @code{false} oder hat @code{radexpand} den Wert
@code{true} und @mref{domain} ist @code{complex}, dann wird @code{sqrt(x^2)}
nicht vereinfacht.
@end itemize
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{rassociative}
@defvr {Eigenschaft} rassociative
@code{declare(f, rassociative)} deklariert die Funktion @code{f} als
rechts-assioziativ. Zum Beispiel wird @code{f(f(a, b), f(c, d))} zu
@code{f(a, f(b, f(c, d)))} vereinfacht.
Siehe auch die Eigenschaft @mref{lassociative} und die Funktion
@mrefdot{declare}
@end defvr
@c -----------------------------------------------------------------------------
@anchor{resimplify}
@deffn {Function} resimplify (@var{expr})
Vereinfacht den Ausdruck @var{expr} erneut basierend auf der aktuellen Umgebung.
Diese Funktion ist n@"utzlich, wenn die Faktendatenbank, Optionsvariablen oder
tellsimp-Regeln ge@"andert wurden, seitdem der Ausdruck zuletzt vereinfacht
wurde.
Beispiel:
@example
(%i1) expr : sin(x)^2 + cos(x)^2;
2 2
(%o1) sin (x) + cos (x)
(%i2) exponentialize : true;
(%o2) true
(%i3) expr;
2 2
(%o3) sin (x) + cos (x)
(%i4) resimplify(%);
%i x - %i x 2 %i x - %i x 2
(%e + %e ) (%e - %e )
(%o4) -------------------- - --------------------
4 4
(%i5) ratsimp(%);
(%o5) 1
@end example
@end deffn
@c --- 12.11.2010 DK -----------------------------------------------------------
@anchor{scsimp}
@deffn {Funktion} scsimp (@var{expr}, @var{rule_1}, @dots{}, @var{rule_n})
Sequential Comparative Simplification (Methode nach Stoute).
@code{scsimp} versucht den Ausdruck @var{expr} mit Hilfe der Regeln
@var{rule_1}, @dots{}, @var{rule_n} zu vereinfachen. Die Regeln werden
nacheinander solange angewendet, bis sich der Ausdruck nicht weiter vereinfacht.
F@"uhrt keine der Regeln zu einem Erfolg, wird der urspr@"ungliche Ausdruck
zur@"uckgegeben.
@code{example(scsimp)} zeigt einige Beispiele.
@end deffn
@c --- 07.03.2011 DK -----------------------------------------------------------
@anchor{simp}
@defvr {Optionsvariable} simp
Standardwert: @code{true}
@code{simp} kontrolliert die Vereinfachung von Ausdr@"ucken. Der Standardwert
von @code{simp} ist @code{true} und Ausdr@"ucke werden vereinfacht. @code{simp}
ist auch ein Auswertungsschalter f@"ur die Funktion @mrefdot{ev}
Wird @code{simp} als ein Auswertungschalter mit dem Wert @code{false} genutzt,
dann wird die Vereinfachung nur w@"ahrend der Auswertungsphase unterdr@"uckt.
@code{simp} kann nicht die Vereinfachung unterdr@"ucken, die sich der Auswertung
anschlie@ss{}t.
Beispiele:
Die Vereinfachung wird ausgeschaltet. Der Ausdruck @code{sin(1.0)} wird nicht
zu einem numerischen Wert vereinfacht. Der Auswertungsschalter @code{simp}
schaltet die Vereinfachung ein.
@example
(%i1) simp:false;
(%o1) false
(%i2) sin(1.0);
(%o2) sin(1.0)
(%i3) sin(1.0),simp;
(%o3) .8414709848078965
@end example
Die Vereinfachung wird wieder eingeschaltet. Der Auswertungsschalter
@code{simp} kann die Vereinfachung nicht vollst@"andig unterdr@"ucken. In der
Ausgabe ist der Ausdruck vereinfacht, aber die Variable @code{x} enth@"alt einen
nicht vereinfachten Ausdruck, da die Zuweisung noch w@"ahrend der
Auswertungsphase des Ausdrucks vorgenommen wurde.
@example
(%i4) simp:true;
(%o4) true
(%i5) x:sin(1.0),simp:false;
(%o5) .8414709848078965
(%i6) :lisp $X
((%SIN) 1.0)
@end example
@end defvr
@c --- 09.10.2010 DK -----------------------------------------------------------
@anchor{symmetric}
@defvr {Eigenschaft} symmetric
@code{declare(f, symmetric)} deklariert die Funktion @code{f} als symmetrisch.
Zum Beispiel wird @code{f(x, z, y)} zu @code{f(x, y, z)} vereinfacht.
@mref{commutative} entspricht @code{symmetric} Siehe auch die Funktion
@mrefdot{declare}
Beispiel:
@example
(%i1) S (b, a);
(%o1) S(b, a)
(%i2) declare (S, symmetric);
(%o2) done
(%i3) S (b, a);
(%o3) S(a, b)
(%i4) S (a, c, e, d, b);
(%o4) S(a, b, c, d, e)
@end example
@end defvr
@c --- 18.10.2010 DK -----------------------------------------------------------
@anchor{xthru}
@deffn {Funktion} xthru (@var{expr})
Die Terme einer Summe des Ausdrucks @var{expr} werden so zusammengefasst, dass
sie einen gemeinsamen Nenner haben. Produkte und Potenzen von Summen werden
dabei nicht expandiert. Gemeinsame Faktoren im Z@"ahler und Nenner werden
gek@"urzt.
Es kann vorteilhaft sein, vor dem Ausf@"uhren von @mref{ratsimp} zun@"achst mit
@code{xthru} die gemeinsamen Faktoren eines rationalen Ausdrucks zu k@"urzen.
Siehe auch die Funktion @mrefdot{combine}
Beispiele:
@example
(%i1) ((x+2)^20 - 2*y)/(x+y)^20 + (x+y)^(-19) - x/(x+y)^20;
20
1 (x + 2) - 2 y x
(%o1) --------- + --------------- - ---------
19 20 20
(y + x) (y + x) (y + x)
(%i2) xthru (%);
20
(x + 2) - y
(%o2) -------------
20
(y + x)
@end example
@end deffn
@c --- End of file Simplifications.de.texi -------------------------------------
|