11. Rechnen mit den Grundfunktionen Maple kennt all die üblichen und viele nicht so übliche Grundfunktionen. Auch die üblichen Funktionalgleichungen, etwa die Additionstheoreme der trigonometrischen Funktionen, sind Maple bekannt. Verwendet wird hierzu der Befehl expand(), den wir bisher nur zum Ausmultiplizieren benutzt haben. > sin(x+y); sin(x + y ) > simplify(%); sin(x + y ) > expand(%); sin(x ) cos(y ) + cos(x ) sin(y ) > expand(exp(x+y)); ex ey > expand(log(x*y)); ln(x y ) Dies wird nicht zu log(x)+log(y) expandiert, da dies beispielsweise für x=y=-1 nicht möglich ist. Wir müssen Maple sagen, dass wir uns x und y als positive Zahlen denken. > expand(log(x*y)) assuming x>0 and y>0; ln(x ) + ln(y ) > expand(log(x*y)) assuming positive; ln(x ) + ln(y ) Letzteres ist eine Kurzform um alle auftretenden Variablen als positiv vorauszusetzen. Maple kennt auch die Zusammenhänge zwischen den Grundfunktionen, man muss aber manchmal auf passende Argumente aufpassen. > simplify(exp(log(x))); x > simplify(arcsin(sin(x))) assuming x>-Pi/2 and x<Pi/2; x Der Befehl combine() versucht Terme unter Verwendung diverser Funktionalgleichungen zu verkürzen. > combine(2*sin(x)*cos(x)); sin(2 x ) 12. Ein Beispiel: Die Tschebyscheff Polynome Wir schauen uns einmal der Reihe nach die expandierte Form von cos(nx) für n von 1 bis 10 an: > n:=’n’:for n from 1 to 10 do cos(n*x)=expand(cos(n*x)); end; cos(x ) = cos(x ) cos(2 x ) = 2 cos(x )2 − 1 cos(3 x ) = 4 cos(x )3 − 3 cos(x ) cos(4 x ) = 8 cos(x )4 − 8 cos(x )2 + 1 cos(5 x ) = 16 cos(x )5 − 20 cos(x )3 + 5 cos(x ) cos(6 x ) = 32 cos(x )6 − 48 cos(x )4 + 18 cos(x )2 − 1 cos(7 x ) = 64 cos(x )7 − 112 cos(x )5 + 56 cos(x )3 − 7 cos(x ) cos(8 x ) = 128 cos(x )8 − 256 cos(x )6 + 160 cos(x )4 − 32 cos(x )2 + 1 cos(9 x ) = 256 cos(x )9 − 576 cos(x )7 + 432 cos(x )5 − 120 cos(x )3 + 9 cos(x ) cos(10 x ) = 512 cos(x )10 − 1280 cos(x )8 + 1120 cos(x )6 − 400 cos(x )4 + 50 cos(x )2 − 1 Hier sehen wir ein Muster, für n von 1 bis 10 kann man cos(nx) als Polynom von Grad n in cos(x) schreiben. Das Polynom von Grad n mit cos(nx)=T_n(x) nennt man auch das n-te Tschebyscheff Polynom. Um dieses mit Maple zu erhalten würden wir gerne cos(x) oben durch x ersetzen. Dies kann man über den Befehl subs(A=B, Term) erreichen, dieser substituiert jedes Auftreten von A im Term durch B. Man kann auch mehrere Substitutionen gleichzeitig durchführen, diese werden dann in Klammern eingeschlossen. Das ist eigentlich nicht nötig, aber systematischer: subs({A1=B1,A2=B2,...}, Term) Für die meisten Zwecke sind subs() und der früher eingeführte eval() Befehl völlig gleichwertig, nur die Reihenfolge der beiden Argumente ist genau anders herum. Gehen wir ans Werk: > for n from 1 to 10 do T[n]:=subs(cos(x)=x,expand(cos(n*x))); end; T1 := x T2 := 2 x 2 − 1 T3 := 4 x 3 − 3 x T4 := 8 x 4 − 8 x 2 + 1 T5 := 16 x 5 − 20 x 3 + 5 x T6 := 32 x 6 − 48 x 4 + 18 x 2 − 1 T7 := 64 x 7 − 112 x 5 + 56 x 3 − 7 x T8 := 128 x 8 − 256 x 6 + 160 x 4 − 32 x 2 + 1 T9 := 256 x 9 − 576 x 7 + 432 x 5 − 120 x 3 + 9 x T10 := 512 x 10 − 1280 x 8 + 1120 x 6 − 400 x 4 + 50 x 2 − 1 > eval(T[8],x=2); 18817 Diese indizierten Variablen erhält man durch Variable[Index] Das sollte man sparsam verwenden, die indizierten Einträge sind keine eigenständigen Variablen sondern weiterhin T, zum Beispiel > T:=1; T := 1 > eval(T[8],x=2); 18 13. Summen Summen werden mit sum() dargestellt. Dabei sind sowohl konkrete numerische Grenzen als auch symbolische Grenzen erlaubt. > n:=’n’: > sum(k,k=1..50); 1275 > sum(k,k=1..n); (n + 1 )2 n 1 − − 2 2 2 > simplify(%); 1 2 1 n + n 2 2 Der sum() Befehl ist für symbolische Rechnungen gedacht und nicht zur Summation beliebiger Listen. Für letzteres gibt es einen ähnlichen Befehl add() der nicht nur über "Zahlintervalle" sondern auch über beliebige Listen von Zahlen summieren kann, zum Beispiel > EinigeZahlen:=[2,5,9,13,17,19,37,42,973]; EinigeZahlen := [2, 5, 9, 13, 17, 19, 37, 42, 973 ] > add(k,k=EinigeZahlen); 1117 > add(1/k,k=EinigeZahlen); 7151905336 6802568955 Der Summationsbefehl sum() hat auch eine groß geschriebene Variante Sum(...). Diese bezeichnet dieselbe Summe, aber Sum() wird von Maple nicht sofort ausgewertet. Dies hat hauptsächlich zwei Anwendungen: 1. Wie im folgenden Beispiel zum "Pretty-Printing" von Formeln. 2. Um eine eventuell zeitaufwendige symbolische Rechnung zu vermeiden, wenn man die Summe sowieso zur numerischen Auswertung an evalf() übergeben will. Ist S eine groß geschriebene Summe, so kann Maple mit dem Befehl value(S) zur Auswertung der Summe aufgefordert werden. > S:=Sum(k,k=1..n):S=factor(value(S)); n ∑ k = n (n2+ 1 ) k=1 > for i from 1 to 6 do Sum(k^i,k=1..n)=factor(sum(k^i,k=1..n)); end; n ∑ k = n (n2+ 1 ) k=1 n ∑k 2 = k=1 n (n + 1 ) ( 2 n + 1 ) 6 n n 2 (n + 1 )2 k = 4 k=1 ∑ 3 n n (n + 1 ) ( 2 n + 1 ) (3 n 2 + 3 n − 1 ) k = 30 k=1 ∑ 4 n n 2 (2 n 2 + 2 n − 1 ) ( n + 1 )2 k = 12 k=1 ∑ 5 n n (n + 1 ) ( 2 n + 1 ) ( 3 n 4 + 6 n 3 − 3 n + 1 ) k = 42 k=1 ∑ 6 Die ganz allgemeine Potenzsumme kann Maple aber nicht berechnen > sum(k^a,k=1..n); n ∑k a k=1 Reihen werden berechnet indem infinity (Unendlich) als obere Grenze eingesetzt wird. > sum(1/n^2,n=1..infinity); π2 6 > sum(1/n,n=1..infinity); ∞ > sum((-1)^(n-1)/n,n=1..infinity); ln(2 ) Wir wollen auch noch eine komplizierte Summe rechnen > S:=Sum((4*n)!*(1+8*n)/(3^(2*n+1)*4^(4*n)*(n!)^4),n=0..infinity); ∞ S := ∑ n=0 (4 n )! (1 + 8 n ) 3 (2 n + 1 ) 4 (4 n ) (n!)4 > S=value(S); ∞ 1 1 1 1 3 9 1 , , , , , 1, 1 , hypergeom = (2 n + 1 ) (4 n ) 9 4 2 4 8 8 4 (n!)4 3 n=0 3 hypergeom(...) ist eine der in Maple eingebauten Grundfunktionen eine sogenannte hypergeometrische Funktion. Wir wollen hier nicht erklären was diese sind, es handelt sich um ein klassisches ∑ (4 n )! (1 + 8 n ) Thema zu dem es reichlich Literatur gibt. Dieser konkrete hypergeometrischer Wert läßt sich tatsächlich noch expliziter ausrechnen. Um auf die rechte Seite der obigen Gleichung zuzugreifen verwendet man den Befehl rhs(), der für "right hand side" steht, analog gibt es auch lhs(), also rhs( X = Y ) Rechte Seite der Gleichung, also Y lhs( X = Y ) Linke Seite der Gleichung, also X > simplify(rhs(%)); 1 1 1 1 3 9 1 hypergeom , , , , , 1, 1 , 9 3 4 2 4 8 8 Das hat nichts gebracht, schauen wir uns also einmal den numerischen Wert an. Wir wollen mit 20 Stellen Genauigkeit rechnen, und um nicht extra Digits zu setzen, benutzen wir die alternative Form von evalf() > evalf(S,20); 0.36755259694786136634 Nun schauen wir mit dem schon früher eingeführten Befehl identify() was Maple mit dieser Zahl anfangen kann > identify(%); 2 3 3π > evalf(%%%,20); 0.36755259694786136633 Dies ist tatsächlich das korrekte Ergebnis, d.h. unsere Reihe ist exakt 2/(sqrt(3)*Pi). Maple kann das leider nicht einsehen. > simplify(value(S)-2/(sqrt(3)*Pi)); 1 1 1 3 9 1 hypergeom , , , , , 1, 1 , π − 2 3 9 1 4 2 4 8 8 π 3 Noch einmal das Endergebnis > S=%%%; ∞ ∑ (4 n )! (1 + 8 n ) (2 n + 1 ) 3 Wir versuchen noch 1/n^3 zu summieren > sum(1/n^3,n=1..infinity); n=0 4 (4 n ) (n!)4 = 2 3 3π ζ(3 ) Das täuscht die Lösung nur vor, es ist per Definition > zeta(x)=Sum(1/n^x,n=1..infinity); ∞ ζ(x ) = ∑ n1 x n=1 für x>1, die sogenannte Riemannsche Zeta-Funktion. Für Maple ist die Zeta-Funktion eine der eingebauten Grundfunktionen unter dem Namen Zeta(x). Wir verwenden den Plot Befehl um uns den Funktionsgraphen der Zeta Funktion anzuschauen. Dabei bleiben wir etwas von der 1 weg da die Zeta-Funktion dort einen Pol hat. > plot(Zeta(x),x=1.1..4,y=0..5); 5 4 3 y 2 1 0 1.5 2 2.5 x 14. Potenzreihen Es können auch Reihen berechnet werden in denen noch Parameter, also weitere freie Variablen, vorkommen, und als ein Beispiel schauen wir uns ein paar Potenzreihen an. > sum(x^k,k=0..infinity); 1 − x−1 Wie Sie wissen gilt dies eigentlich nur für |x| < 1, solche Konvergenzfragen werden von Maple ignoriert > sum(k*x^k,k=0..infinity); x (x − 1 ) 2 3 3.5 4 > sum(x^k/k!,k=1..infinity); ex − 1 > sum(x^k/(2*k)!,k=0..infinity); cosh( x ) 15. Trigonometrische Reihen Eine trigonometrische Reihe ist eine Reihe der Form > T:=a[0]/2+Sum(a[n]*cos(n*x)+b[n]*sin(n*x),n=1..infinity); ∞ 1 a T := 0 + (an cos(n x ) + bn sin(n x )) 2 n = 1 Schauen wir uns einmal ein konkretes Beispiel an > fN:=(4/Pi)*Sum(sin((2*n-1)*x)/(2*n-1),n=1..N); N sin((2 n − 1 ) x ) 4 2n−1 n = 1 fN := π und betrachten einige Partialsummen dieser Reihe > plot(eval(fN,N=5),x=-2*Pi..2*Pi); ∑ ∑ 1 0.5 –6 –4 –2 2 4 x –0.5 –1 > plot(eval(fN,N=10),x=-2*Pi..2*Pi); 6 1 0.5 –6 –4 –2 0 2 4 x –0.5 –1 > plot(eval(fN,N=20),x=-2*Pi..2*Pi); 6 1 0.5 –6 –4 0 –2 2 4 x –0.5 –1 Die Reihe konvergiert gegen eine sogenannte Rechteckwelle und wir wollen einmal schauen ob Maple diese berechnen kann. > eval(fN,N=infinity); ∞ sin((2 n − 1 ) x ) 4 2 n − 1 n = 1 π > value(%); 1 + e (x I) 1 + e (x I) + ln I −ln − ( x I ) ( x I ) −1 + e −1 + e π > evalc(%); sin(x ) (−1 + cos(x )) (1 + cos(x )) sin(x ) − −arctan − , + (−1 + cos(x ))2 + sin(x )2 (−1 + cos(x ))2 + sin(x )2 ∑ 6 sin(x )2 + arctan 2 2 (−1 + cos(x ))2 + sin(x )2 (−1 + cos(x )) + sin(x ) sin(x ) (−1 + cos(x )) (−1 − cos(x )) sin(x ) + 2 2 2 2, (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) 1 (1 + cos(x )) (−1 + cos(x )) sin(x )2 / π + − ln 2 2 + 2 2 2 (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) (−1 − cos(x )) (−1 + cos(x )) − (−1 − cos(x )) (−1 + cos(x )) sin(x )2 − 2 2 2 2 (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) 2 sin(x ) (−1 + cos(x )) (−1 − cos(x )) sin(x ) + − − 2 2 2 2 (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) (1 + cos(x )) (−1 + cos(x )) sin(x )2 + 2 2 2 2 (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) 1 + ln 2 2 2 2 sin(x ) (−1 + cos(x )) (1 + cos(x )) sin(x ) I / π + 2 2 − 2 2 (−1 + cos(x )) + sin(x ) (−1 + cos(x )) + sin(x ) > simplify(%); sin(x ) sin(x ) , 0 arctan − , 0 − arctan −1 + cos(x ) −1 + cos(x ) π Man sieht es dieser Formel zwar nicht direkt, aber dies ist tatsächlich das korrekte Ergebnis, wie uns beispielsweise ein Funktionsplot zeigt. > plot(%,x=-2*Pi..2*Pi); 1 0.5 –6 –4 –2 2 4 6 x –0.5 –1 Zum Abschluß dieses Beispiels wollen wir uns noch einen direkten Vergleich dieser Grenzfunktion mit der Partialsumme etwa für N=5 anschauen. Hierzu wollen wir beide Funktionen in ein gemeinsames Bild zeichnen. Auch dies kann der Plot-Befehl leisten, man muss die beiden Funktionen nur in eckigen Klammern [ ... ] als erstes Argument des Plot-Befehls verwenden. > plot([%%,eval(fN,N=5)],x=-2*Pi..2*Pi,discont=true,color=[blue,re d]); 1 0.5 –6 –4 –2 2 4 x –0.5 –1 Die letzte Option ’color=[...]’ ist dabei optional, sie kann dazu verwendet werden die Farben der einzelnen Graphen festzulegen. 16. Ein trigonometrisches Beispiel Wir wollen die folgende trigonometrische Summe in einer möglichst übersichtlichen geschlossenen Form auswerten. > S:=Sum(cos(omega*t-alpha-n*beta),n=-N..N); N S := ∑ cos(−ω t + α + n β) n = −N > value(S); 1 − (cos(ω t ) cos(α ) cos(β ) + sin(ω t ) sin(α ) cos(β ) − cos(ω t ) cos(α ) − sin(ω t ) sin(α ) 2 1 + cos(ω t ) sin(α ) sin(β ) − sin(ω t ) cos(α ) sin(β )) cos((N + 1 ) β ) / (cos(β ) − 1 ) + ( 2 6 cos(ω t ) cos(α ) cos(β ) + sin(ω t ) sin(α ) cos(β ) + cos(ω t ) sin(α ) sin(β ) − sin(ω t ) cos(α ) sin(β ) 1 + cos(ω t ) cos(α ) + sin(ω t ) sin(α )) sin((N + 1 ) β ) / sin(β ) + (cos(ω t ) cos(α ) cos(β ) 2 + sin(ω t ) sin(α ) cos(β ) − cos(ω t ) cos(α ) − sin(ω t ) sin(α ) + cos(ω t ) sin(α ) sin(β ) 1 − sin(ω t ) cos(α ) sin(β )) cos(N β ) / (cos(β ) − 1 ) + (cos(ω t ) cos(α ) cos(β ) 2 + sin(ω t ) sin(α ) cos(β ) + cos(ω t ) sin(α ) sin(β ) − sin(ω t ) cos(α ) sin(β ) + cos(ω t ) cos(α ) + sin(ω t ) sin(α )) sin(N β ) / sin(β ) Das ist bereits ein Fortschritt, die Formel ist zwar noch unbrauchbar groß, es kommt aber keine Summe mehr vor. Wir lassen Maple ein wenig weiter machen. > simplify(%); 1 (cos(ω t ) cos(α ) cos(β ) sin(N β ) + cos(β ) sin((N + 1 ) β ) sin(ω t ) sin(α ) 2 + sin(ω t ) sin(α ) cos(β ) sin(N β ) + cos(β ) sin((N + 1 ) β ) cos(ω t ) cos(α ) − cos(β ) cos((N + 1 ) β ) sin(ω t ) cos(α ) − cos(β ) cos(N β ) cos(ω t ) sin(α ) + cos(β ) cos((N + 1 ) β ) cos(ω t ) sin(α ) + cos(β ) cos(N β ) sin(ω t ) cos(α ) − cos((N + 1 ) β ) sin(β ) cos(ω t ) cos(α ) − sin(N β ) sin(ω t ) cos(α ) sin(β ) + cos(N β ) sin(β ) cos(ω t ) cos(α ) + sin((N + 1 ) β ) cos(ω t ) sin(α ) sin(β ) − sin((N + 1 ) β ) sin(ω t ) cos(α ) sin(β ) + cos(N β ) sin(β ) sin(ω t ) sin(α ) + sin(N β ) cos(ω t ) sin(α ) sin(β ) − cos((N + 1 ) β ) sin(β ) sin(ω t ) sin(α ) + sin(N β ) cos(ω t ) cos(α ) + sin((N + 1 ) β ) sin(ω t ) sin(α ) + sin(N β ) sin(ω t ) sin(α ) + sin((N + 1 ) β ) cos(ω t ) cos(α ) − cos((N + 1 ) β ) sin(ω t ) cos(α ) − cos(N β ) cos(ω t ) sin(α ) + cos((N + 1 ) β ) cos(ω t ) sin(α ) + cos(N β ) sin(ω t ) cos(α )) / sin(β ) Durch Anwendung trigonometrischer Formeln über combine() kann man den Ausdruck weiter verkleinern > combine(%); 1 sin(ω t − α + N β + β ) + sin(−ω t + α + N β + β ) + sin(ω t − α + N β ) + sin(−ω t + α + N β ) 2 sin(β ) Das ist schon nicht schlecht. Die Parameter omega, t und alpha kommen nur noch als omega*t-alpha vor, und das soll auch so bleiben. Wenn wir aber den Zähler expanden, so werden die drei wieder auseinander gerissen. Wir vermeiden dies, indem wir sie als zeta zusammenfassen. Das hätte man auch ganz zu Anfang tun können. Das wir am Ende das zeta dann wieder zurück substituieren müssen, merken wir uns die ganze Substitution in einer Variablen zetasubs. > zetasubs:=zeta=omega*t-alpha; zetasubs := ζ = ω t − α Es tritt noch ein weiteres kleine Problem auf. Der Befehl subs() macht rein syntaktische Ersetzungen er merkt aber nicht das -omega*t+alpha als -zeta substituiert werden kann. Es gibt einen etwas intelligenteren Substitutionsbefehl algsubs(), der auch solche Folgerungen aus einer Substitution berücksichtigt: algsubs(A=B, Term) > algsubs(rhs(zetasubs)=zeta,%%); 1 sin(ζ + N β + β ) + sin(−ζ + N β + β ) + sin(ζ + N β ) + sin(−ζ + N β ) 2 sin(β ) > expand(%); cos(ζ) cos(β ) sin(N β ) cos(ζ) sin(N β ) + cos(ζ) cos(N β ) + sin(β ) sin(β ) > simplify(%); cos(ζ) (cos(β ) sin(N β ) + cos(N β ) sin(β ) + sin(N β )) sin(β ) Jetzt ist cos(zeta) schön abgespalten, und wir wollen jetzt die Klammer im Zähler vereinfachen. Direkt combine() anzuwenden funktioniert aber nicht, da das ’cos(zeta)’ dann wieder in die Terme hineingemischt wird. Wir wollen combine() nicht auf den gesamten Term, sondern nur auf die Klammer anwenden. Hierfür gibt es verschiedene Möglichkeiten. Wir könnten wieder mit Substitutionen herumtricksen, etwa cos(zeta)=A und sin(beta)=B substituieren, dann combine() machen und alles zurücksubstituieren. Hier wollen wir einen alternativen Weg vorstellen und schauen uns erst einmal an was Maple von unserem Term überhaupt weiss > whattype(%); * > op(%%); cos(ζ), cos(β ) sin(N β ) + cos(N β ) sin(β ) + sin(N β ), Für Maple liegt also ein Produkt vor (Typ *) und der Befehl op() hat die drei Operanden dieses Produkts geliefert. Der Maple Befehl: map(Kommando, Formel) wendet einen Maple Befehl ’Kommando’ auf alle Teilformeln von Formel an, aber nicht auf die Formel selbst. Was Maple jeweils für die Teilformeln hält, kann man sich mit dem obigen op() Befehl anschauen. Hier wenden wir combine() auf jede der drei Teilformeln an. Effektiv wirkt combine() dann nur auf die Klammer im Zähler, da es bei den anderen beiden Teilformeln nichts zu combinen gibt. > map(combine,%%%); cos(ζ) (sin(N β + β ) + sin(N β )) sin(β ) > T:=%; cos(ζ) (sin(N β + β ) + sin(N β )) T := sin(β ) 1 sin(β ) Sehr schön, es geht aber noch besser. Maple kommt von alleine nicht weiter, wir müssen schon selbst etwas Hand anlegen. Der Befehl trigsubs(...) schlägt eine Liste von möglichen trigonometrischen Umformungen eines Terms vor. Uns interessiert die Klammer im Zähler, an die wir wieder mit dem Befehl op() herankommen. > op(T); cos(ζ), sin(N β + β ) + sin(N β ), 1 sin(β ) > trigsubs(%[2]); 1 β 2 sin N β + β cos 2 2 Ob wir mit der vorgeschlagenen Substitution etwas anfangen können, bleibt uns überlassen. In diesem Beispiel führen wir die Substitution durch um die Summe durch ein Produkt zu ersetzen. > subs(%%[2]=%[1],T); 1 β 2 cos(ζ) sin N β + β cos 2 2 sin(β ) Schauen wir uns auch noch an wie wir den Nenner umschreiben können. Zähler und Nenner eines Bruchs erhielt man über die beiden Befehle denom(X/Y) Nenner, also Y numer(X/Y) Zähler, also X > trigsubs(denom(%)); β tan 2 β β 1 1 2 -1 ( β I ) ( −I β ) ,− , , I ( e − ) sin(β ), −sin(−β ), 2 sin cos , e 2 2 2 csc(β ) csc(−β ) 2 β 1 + tan 2 Hier haben wir gleich eine ganze Liste von Möglichkeiten. Wir entscheiden uns für die dritte in dieser Liste, da sich dann das cos(beta/2) wegkürzt. > subs(denom(%%)=%[3],%%); 1 cos(ζ) sin N β + β 2 β sin 2 Das ist unser Endergebnis. Wir müssen nur noch daran denken zeta zurück zu substituieren. > R:=subs(zetasubs,%); 1 cos(ω t − α ) sin N β + β 2 R := β sin 2 > S=R; 1 cos(ω t − α ) sin N β + β 2 cos(−ω t + α + n β ) = β n = −N sin 2 N ∑ 17. Grenzwerte Grenzwerte können mit dem Maple Befehl limit(Formel, x=a) berechnet werden wobei der Grenzwert in a gebildet werden soll. Dabei ist a=infinity für Grenzwerte in unendlich erlaubt. Dieser Befehl wird sowohl für Grenzwerte von Folgen als auch für Grenzwerte von Funktionen verwendet. > limit(exp(-x),x=infinity); 0 Wie bei sum() gibt es auch eine großgeschriebene Variante Limit() die zum "Pretty-Printing" verwendet werden kann > A:=Limit(arctan(x),x=infinity): > A=value(A); π lim arctan(x ) = 2 x →∞ Der limit() Befehl ist nicht perfekt, selbst einige eigentlich recht einfache Grenzwerte schafft Maple nicht direkt. > A:=(3*n^3-7*n^2+5*n+sin(n^2+3))/(5*n^3+2*n^2-43*n+(-1)^n*cos(sqr t(n))); A := 3 n 3 − 7 n 2 + 5 n + sin(n 2 + 3 ) 3 2 n 5 n + 2 n − 43 n + (-1) cos( n ) > limit(A,n=infinity); undefined In einigen Fällen hilft es dann Maple über geeignete ’assuming’ Zusätze Nebenbedingungen mitzuteilen, beispielsweise nicht > Limit(exp(-a*x)*cos(b*x),x=infinity):%=value(%); lim e ( −a x ) cos(b x ) = lim e x →∞ ( −a x ) x →∞ sondern > %%=value(%%) assuming a>0; lim e ( −a x ) cos(b x ) = 0 x →∞ Liegt dagegen nur ein links- oder rechtsseitiger Grenzwert vor so muss dies Maple auf eine etwas andere Art mitgeteilt werden. > f:=cos(x)^(1/x^3); f := cos(x ) > Limit(f,x=0):%=value(%); 1 3 x cos(b x ) lim cos(x ) 1 3 x = undefined x →0 hat keinen Grenzwert, es gibt aber einen rechtsseitigen Grenzwert > Limit(f,x=0,right):%=value(%); lim cos(x ) x → 0+ > 1 3 x =0