Comments
Description
Transcript
MAPLE Maplesoft
MAPLE (Ein Produkt der Firma Maplesoft: http://www.maplesoft.com) Maple steht für „mathematical manipulation language“ und ist ein Computeralgebrasystem (CAS) von der Firma Maplesoft, mit dem man unter anderem: symbolische und numerische Berechnungen durchführen und Vereinfachungen vornehmen, Grafiken erstellen, Gleichungen und Gleichungssysteme lösen, eigene Prozeduren schreiben und Differentialgleichungen lösen kann. Maple gibt es für die unterschiedlichsten Betriebssysteme. Hauptkomponente der grafischen Benutzeroberfläche von Maple ist das jeweilige Worksheet, in dem interaktiv gearbeitet wird. Es erscheint nach dem Start als Fenster, in das Rechenanweisungen (Maple-Inputs) eingetragen werden. Die Maple-Engine interpretiert diese Anweisungen und liefert entsprechende Ausgaben (Maple-Outputs) zurück. Das Einfügen von mathematischen Symbolen, Ausdrücken, Vektoren und Matrizen in Rechenanweisungen wird erleichtert durch die Benutzung von Paletten. Diese bestehen aus für verschiedene Aufgaben vorgefertigten Code-Schnipseln, die per Mausklick dem Worksheet hinzugefügt werden können. Typische Maple-Outputs sind Zahlenwerte, Terme, Funktionen, Tabellen, 2- und 3-dimensionale Grafiken, Animationsobjekte und Diagramme. Maple umfasst einen Kern häufig benutzter Standard-Rechenanweisungen und zusätzliche, zur Laufzeit mit dem with-Befehl ladbare Packages. Werden zu einem bestimmten Maple-Begriff zusätzliche Informationen benötigt, so kann man den Cursor (|) auf diesen Begriff setzen und danach mit der Maus auf Help - Help on "..." (oder F2) klicken. Eine erste kurze Einführung in die Arbeit mit Maple erhält man nach Aktivieren der folgenden Befehlszeile: > ?introduction; Möglicherweise sind auch folgende Hilfe-Aufrufe von Interesse: > ?type; (Datentypen) > ?ininame; (Konstanten und Umgebungsvariablen) > ?operators; (Operatoren) > ?index[package]; (Packages) > ?plot[options]; (plot-Optionen) > ?keywords; (Schlüsselwörter) Prinzipiell unterscheidet Maple fünf verschiedene Bereiche: Eingabe, erkennbar am Maple-Prompt Berechnungs-Ausgabe, erkennbar an der zentrierten Ausgabe in blauer Kursivschrift Text-Ausgabe (formatiert), erkennbar an der linksbündigen Ausgabe in blauer Schrift Text, der zum Einfügen von erläuternden Bemerkungen dient Fehlermeldung, erkennbar an der magentafarbigen Schrift 1 1 > Befehl1; # Dies ist ein Kommentar. 2 > Befehl2; 3 Ausgabe − Berechnung 4 Ausgabe-Text 5 Dies ist eine Fehlermeldung Eine der wichtigsten Eigenschaften von Maple ist, daß es sowohl symbolische als auch numerische Berechnungen durchführen kann. Daher kann es außer mit Zahlen auch mit algebraischen Formeln umgehen. Numerische und symbolische Berechnungen: Neben symbolischen und numerischen Berechnungen hat die Visualisierung von Ergebnissen einen hohen Stellenwert. In grafischen Darstellungsmöglichkeiten, neben den symbolischen Berechnungsmöglichkeiten, liegt eine andere Stärke von Maple. Zu Beginn werden daher erste, einfache Befehle und ein paar Eigenheiten von Maple vorgestellt, die wichtig für das weitere Verständnis sind. Zahlen, Arithmetik und vordefinierte Funktionen Die ersten Schritten > restart; Die Anweisung restart; löscht alle Einträge im Speicher von Maple. Das bedeutet, dass nach einem restart; die Situation so ist, als ob noch keine Rechenanweisung ausgeführt worden wäre Vor dem Ausführen der Rechenanweisungen eines neuen Maple-Arbeitsblattes sollte immer ein restart; durchgeführt werden. Anweisungen werden an der Maple-Eingabeaufforderung [> (Prompt) eingegeben. Eine neue Anweisungszeile erzeugt man durch einen Klick auf den Button [> in der Kopfzeile. Jede Anweisung wird entweder durch ein Semikolon oder durch einen Doppelpunkt abgeschlossen. „ ; “ bewirkt die Auswertung (Evaluation) und anschließende Protokollierung des Ergebnisses, „ : “ bewirkt die Auswertung ohne Protokollierung des Ergebnisses Die Ausführung der Befehle erfolgt erst nach Eingabe von Enter ! Ganze Zahlen Positive Vorzeichen werden – wie es in der Mathematik üblich ist – nicht protokolliert. > -2; +16; 10; -9; -2 16 10 -9 Brüche 2 Das Divisionszeichen ist in Maple der Schrägstrich. Der in der Mathematik übliche Doppelpunkt ist bereits mit der Eigenschaft belegt, dass er das Befehlsende kennzeichnet und kommt daher nicht in Frage. > 1/2: 1/8; -3/4; 1 8 3 4 Gleitkommazahlen/Dezimalbrüche > 2.5; -1.2; -.5; 3.0; 2.5 −1.2 −0.5 3.0 Eine Auswahl symbolischer Konstanten MAPLE BEDEUTUNG Pi infinity I i=-1 Maple berücksichtigt die Groß- und Kleinschreibung und unterscheidet daher zwischen Pi, PI und pi – ist also case sensitive. Die Berechnung einer Gleitkomma-Näherung erfolgt mit evalf (evaluate to a floating- point number). Die gewünschte Stellenanzahl kann als optionaler Parameter übergeben werden. Im nächsten Beispiel sind es 20 Ziffern (hier also 19 Nachkommastellen): > evalf(Pi, 20); > evalf(Pi); (voreingestellt sind 10 Ziffern) 3.1415926535897932385 3.141592654 Die Rundung der letzten Stelle erfolgt dabei automatisch. Mit Digits lässt sich die Rechengenauigkeit beeinflussen: > Digits := 20; > evalf(Pi); Digits := 20 3.1415926535897932385 Wenn eine erhöhte Genauigkeit nicht mehr erforderlich bzw. gewünscht ist, gibt es die Möglichkeit, sie auf den Standardwert zurückzusetzen. 3 > Digits := 10: Für manche Berechnungen bzw. Grenzwerte ist unendlich notwendig: > infinity; 1 wird als die imaginäre Einheit erkannt und durch I protokolliert: > (-1)^(1/2); I Arithmetik Arithmetische Operationen In Maple stehen unter anderem folgende Operatoren zur Verfügung: Addition Subtraktion Multiplikation Division Potenzierung ˆ Fakultät oder + * / ** ! Die Auswertungs-Hierarchie: Klammern Funktionsaufrufe ˆ * bzw. / (von links nach rechts) + bzw. − als Operator (von links nach rechts) Einige Beispiele: > 1/2 + 1/3; 5 6 > (-8)^(1/3); (8) 1 3 > (a+b)*(a+b); (a+b)2 Nächste Ausgabe zeigt die Bedeutung des Backslash „\“. Bei der Ergebnisanzeige dient er als Hinweis auf die Fortsetzung der Ausgabe in der nächsten Zeile. > 88!; 4 185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141\ 244804501828416633516851200000000000000000000 Arithmetik mit Gleitkommazahlen Sobald in einer Berechnung eine Gleitkommazahl auftaucht, werden alle anderen Zahlen entsprechend angepasst und es erfolgt eine numerische und keine symbolische Berechnung. Je nach eingestellter Rechengenauigkeit können Rundungsfehler auftreten. > 1/2 + 1/3; > 1/2 + 1/3.0; 0.8333333333 > 1.0/3.0*3.0; 0.9999999999 Deshalb ist es besser > 1 + 1/10; einzugeben als > 1 + 0.1; 1.1 > -8.0^(1/3); −2.000000000 > sqrt(2); square-root (Quadratwurzel) > sqrt(2.0); square-root (Quadratwurzel) 1.414213562 > sqrt(2)*sqrt(2); 2 > sqrt(2.0)*sqrt(2.0); 1.999999999 Das letzte Beispiel zeigt nochmal sehr deutlich den Unterschied zwischen numerischer und symbolischer Berechnung auf. Zusammenfassen von Bruchtermen > normal (a^2/a*b + a*b/b^2); 5 Terme und Termumformungen Der Expand-Befehl expandiert auch die meisten mathematischen Funktionen, z.B. Ausmultiplizieren: > expand ((a+b)^2); a2 + 2ab + b2 Trigonometrische Funktionen der Summe zweier Winkel > expand (sin(x+y)); sin(x)cos(y) + cos(x)sin(y) Faktorisieren > factor(b^2 - a^2); (b − a) (b + a) Auswerten eines Terms > eval(x^3-x^2, x = 123); 1845738 > evalf(sqrt(3) - 3); -1.267949192 Definieren eines Terms > a:= (2*x^4 - 4)/(x^2 - sqrt(2)); Quadratisch ergänzen (rechnet das gegebene Polynom um in einen Ausdruck der Form a(x+b)2+ c). > with(student): > q:= 3*x^2 + 2*x + 4: > q:=completesquare(q,x); Vereinfachen > simplify(20*a^3/5*a); Polynome Grad eines Polynoms > degree(x^5 + x); 6 Koeffizient eines Polynoms > coeff(x^3 + 4*x^2 - 5*x, x, 2); Sortieren (sortiert ein Polynom in absteigender Reihenfolge) > sort(a*x + b*x^4 + c*x^2); Endliche Summen und Produkte In Rechenanweisungen muss die Groß- und Kleinschreibung beachtet werden! Beispielsweise haben sum und Sum (oder int und Int) jeweils unterschiedliche Bedeutungen: Summen und Summenwerte > Sum(a^2, a = 1..100); > sum(a^2, a = 1..100); > value(Sum (a^2, a = 1..n)); Produkte und Produktwerte > Product(i^2, i = 1..10); > product (i^2, i = 1..10); 13168189440000 Vordefinierte Funktionen Beispiele: exp, ln, log sqrt, abs Exponentialfunktion, Logarithmen Quadratwurzel, Absolutbetrag 7 signum sin, cos, tan arcsin, arccos, arctan binomial round trunc frac surd(x,n) Vorzeichenfunktion trigonometrische Funktionen Umkehrfunktionen der trig. Funktionen a! a binomial(a,b) = b b!(a b)! Runden zur nächsten ganzen Zahl ganzzahliger Teil (truncation) gebrochener Anteil einer rationalen Zahl n-te reelle Wurzel aus einer Zahl/Ausdruck Einige Maple-Beispiele: > abs(-3.2); 3.2 > signum(abs(x)); signum(-abs(x)); 1 −1 > round(3.6); 4 > trunc(3.48); 3 > frac(25.7); 0.7 Die Eulersche Zahl e = 2.718281828 . . . ist in Maple keine vordefinierte Konstante (im Gegensatz zur Kreiszahl ). Ihren Wert erhält man mit exp(1); und wird durch e protokolliert. Die Exponentialfunktion ist also nicht eˆx, sondern exp(x). > exp(1); e > exp(1.0); 2.718281828 > cos(Pi/6); > sin(Pi/4); Das Prozentzeichen % ist der Ditto-Operator. Er enthält das zeitlich letzte, nichtleere Ergebnis. > ln(Pi); 8 ln() > evalf(%); 1.144729886 Dekadischer Logarithmus: > log[10](100); 2 Logarithmus zur Basis 2: > log[2](8); 3 Ohne Angabe der Basis wird die Voreinstellung genommen (Eulersche Zahl e): > log(100.); 4.605170186 > (4+2*sqrt(3))^(1/2); > simplify(%); > restart; > a; b; c; d; a b c d Analog zu % enthält %% das zeitlich (nicht räumlich) vorletzte, sowie %%% das zeitlich vorvorletzte nichtleere Ergebnis. > %, %%, %%%; d, c, b > restart; > a; b; c; d; a b c d Der feine Unterschied zu dem vorigen Beispiel besteht darin, dass hier keine Anweisungsfolge vorliegt: 9 > %; %%; %%%; d d d Bei einer Anweisungsfolge (Maple-Ausdrücke durch Kommata getrennt) wird erst die Ausgabe zusammengestellt und dann protokolliert. Es gibt einige vordefinierte Funktionen bei komplexen Zahlen, die im Folgenden anhand von Beispielen vorgestellt werden: Re Im abs conjugate argument polar Realteil Imaginärteil Betrag konjugiert komplexer Wert Winkel der Polarkoordinatendarstellung Darstellung in Polarkoordinaten > exp(I); Re(3*%); Im(2*I*%%); eI 3cos(1) 2cos(1) > (2+3*I)*(4+5*I); > Re(%), Im(%), conjugate(%), abs(%), argument(%); −7 + 22I 22 arctan 7 In Zeile 2 des letzten Beispiels liegt wieder eine Anweisungsfolge vor. Der Ditto-Operator % steht hier immer für den Ausdruck in Zeile 1. −7, 22,−7 − 22I, 533, Definition von Funktionen Man kann in Maple Funktionen (also die Zuordnung x f (x)) auf drei Arten definieren: (1) Direkte Definition eines Funktionsterms f(x) > f(x):= x^2 + 3; > g(x,y):= x^2*y + 7; g(x,y):=x2y + 7 (2) Mit dem Zuweisungsoperator > f:= x x^2 + 3; Funktionsname := Variable Ausdruck. Definiert eine Funktion von einer Variable. > g:=(x,y) sin(x)*y; 10 Funktionsname := (Variablen-Folge) Ausdruck. Definiert eine Funktion von mehreren Variablen. (3) Mit dem Befehl unapply() > f:= unapply(x^2 + 3, x); Funktionsname := unapply (Ausdruck, Variablen) definiert werden. Die angegebenen Variablen dürfen nicht mit Werten belegt sein. > f:=unapply(a*xˆ2+b*yˆ2+c*zˆ2,x,y,z); f := (x,y,z) = ax2 + by2+cz2 Gleichungen Definition einer Gleichung > gl:= x+1 = 3*x; Linke Seite einer Gleichung > lhs (gl); x+1 Rechte Seite einer Gleichung > rhs (gl); 3x Lösen einer Gleichung mit einer Variablen > solve (x^2 + 4*x = 2); > fsolve (x^2 + 4*x = 2); Lösen eines linearen Gleichungssystems mit zwei Variablen > gl1:= 2*x - 3*y = 5: > gl2:= -3*x + 5*y = 2: > LGS:= {gl1, gl2}; > solve (LGS, {x, y}); > assign(%): > x; y; 31 19 11 Folgen und Reihen Grenzwert einer Zahlenfolge: Maple versucht den Grenzwert von f zu berechnen, wenn x gegen a strebt. > limit (f, x = a); Z.B. > limit (1/n, n = infinity); > limit ((n+1)/n, n = infinity); 1 > limit (f(x)/x, x=b); f(b)/b Taylorreihe: > taylor(sqrt(x), x = 2, 3); In den Klammern: Ausdruck, Entwicklungspunkt (hier 2) und Ordnung der Entwicklung (hier 3), Zahlenfolge > seq (i^2, i=1..5 ); Der seq-Befehl wird verwendet, um eine Sequenz von Werten zu konstruieren. Die typische Aufrufsequenz ist seq(f (i), i = 1 .. n), die die Folge f (1), f (2), ..., f (n) erzeugt. Ganz allgemein seq(f (i), i = m .. n) erzeugt die Folge f (m), f (m +1), ..., f (n). Differentialrechnung Differenzieren eines Funktionsterms: a) Aktive form: > diff (sin(x), x); > f(x):= 5*x^3 + x - 7; > Df(x):= diff (f(x), x); > D2f(x):= diff (Df(x), x); 12 b) Inaktive Form: > Diff (sin(x), x); d sin(x) dx > value(%); cos(x) Die zweite Ableitung einer Funktion kann man auch anders berechnen: > D2f(x):= diff (f(x), x,x); Oder > D2f(x):= diff (f(x),x$2); Ziffer 2 nach x zeigt die Ordnung der Ableitung nach Variable x. Partielle Ableitungen Definition eines Funktionsterms in Abhängigkeit von x und y: > f(x,y):= x^4*y^3; Partielles Ableiten von f(x,y) nach x und nach y: > diff (f(x,y), x, y); Einmaliges partielles Ableiten nach x, zweimaliges partielles Ableiten nach y: > diff (f(x,y), x, y, y); oder > diff (f(x,y), x, y$2); Integralrechnung Bestimmtes Integral 13 > Int (1/x, x = 1..2); > int (1/x, x = 1..2); Unbestimmtes Integral Beispiel 1: > f(x):= x; > F(x):= Int (f(x), x); > F(x):= value(F(x)) + C; Beispiel 2: > g(x):= 1/sqrt(1+sqrt(x)); > G(x):= Int (g(x), x); > G(x):= simplify (value (G(x))) + C; Beispiel 3: > Int (exp(a*x^10), x); 14 > simplify(value (%)); Lineare Algebra Definition von Vektoren > with (linalg): > v:= <a| b| c>; # Zeilenvektor > w:= <a, b, c>; # Spaltenvektor Betrag eines Vektors ("2-Norm eines Vektors") > with(linalg): > norm(<a| b| c>, 2); > norm(<a, b, c>, 2); Kreuzprodukt > with (linalg): > crossprod (<a[x], a[y], a[z]>, <b[x], b[y], b[z]>); Skalarprodukt > with (linalg): > dotprod (<a[x], a[y], a[z]>, <b[x], b[y], b[z]>); > dotprod (<3, 2, -1>, <2, -5, 2>); -6 15 Matrizen Definition einer 3x2-Matrix > with (linalg): > A32:=Matrix([[a[11], a[12]], [a[21], a[22]], [a[31],a[32]]]); Addition von Matrizen > with (linalg): > M1:= Matrix (3, 2, [a, b, c, d, e, f]): > M2:= Matrix (3, 2, [A, B, C, D, E, F]): > matadd (M1, M2); Determinante einer Matrix > with (linalg): > det ([[2, 1], [3, 4]]); 5 Multiplikation von Matrizen > with (linalg): > multiply ([2, 1],[[2, 3], [1, 4]]); [5,10] Inverse einer Matrix > with (linalg): > A22:= Matrix(2,2,[a[11],a[12],a[21],a[22]]); > A22INV:= inverse(A22); 16 Grafische Darstellung Eine der ganz großen Stärken von Maple liegt in den zahlreichen Grafik-Routinen für zweiund dreidimensionale Darstellungen in einer Vielzahl von unterschiedlichen Koordinatensystemen. Ein paar Möglichkeiten werden hier nun vorgestellt. Grafische Darstellung (2D) Mit dem plot-Befehl können wir zweidimensionale Grafiken erzeugen: > restart; > plot(sin, Funktionsname > 0..2*Pi, Abszissenbereich > -1..1, Ordinatenbereich > color=blue, Farbeinstellung > thickness=3, Strichdicke > scaling=constrained, gleiche Skalierung für beide Achsen > title="Sinus"); Überschrift Abbildung 3.1: Sinusfunktion Ohne weitere Angaben werden die Voreinstellungen gewählt. Diese sind jedoch nicht immer sinnvoll: > plot(tan); Abbildung 3.2: Tangensfunktion mit Voreinstellungen 17 Möchten wir statt des Standardintervalls [−10, 10] einen anderen Bereich betrachten, dann muss dieser angegeben werden und eventuell weitere Einstellungen: > plot(tan,-Pi..2*Pi,-5..5,discont=true,color=coral, thickness=3,title="Tangens"); Abbildung 3.3: Tangensfunktion Maple berechnet zum Zeichnen einzelne Punkte der Funktion. Dabei wird auch die Krümmung der Kurve berücksichtigt, um eine eckige Darstellung zu vermeiden. Das heißt in Intervallen mit stärkerer Krümmung werden mehr Punkte berechnet. Bei der Voreinstellung discont=false wird beim Zeichnen der Funktion nicht abgesetzt, so dass der Kurvenverlauf bei Polstellen nicht korrekt dargestellt wird. Für die stark oszillierende Funktion f erhalten wir einen ersten Überblick durch > f := x->sin(x)*sin(10*x)*sin(100*x): > plot(f); Hier wurde der Ausdruck sin(x)*sin(10*x)*sin(100*x) unter den Namen f gespeichert. 18 Eine Detailansicht ergibt sich durch die Angabe des gewünschten Intervalls: > plot(f,-0.5..0.5,-0.5..0.5,thickness=2,color=red); Natürlich ist es auch möglich, mehrere Kurven in einer Grafik auszugeben: > plot([sin,cos,tan],0..2*Pi,-5..5,discont=true, > color=[blue,brown,coral],thickness=3, > title="Sinus, Kosinus und Tangens", > legend=["Sinus","Kosinus","Tangens"]); Abbildung: Sinus-, Kosinus- und Tangensfunktion Die gewünschten Funktionen werden einfach als Liste übergeben. Weitere Veränderungen können wir vornehmen, wenn wir die Grafik anklicken und das Gewünschte aus der 19 Menüleiste oder dem Kontextmenü auswählen – je nachdem ob wir die linke oder rechte Maustaste verwendet haben. Übersichtlicher ist es jedoch, die einzelnen Kurven vorher in Variablen abzuspeichern, um diese anschließend mit dem Befehl display aus dem Paket plots darzustellen. > restart; > with(plots,display): > Bild1 := plot([exp(-x),-exp(-x)],x=-2..3,y=-6..6, > color=orange,thickness=3,numpoints=200): > Bild2 := plot(exp(-x)*sin(4*x),x=-2..3,y=-6..6, > color=coral,thickness=2,numpoints=200): > display([Bild1, Bild2]); Abbildung 3.7: e-x · sin(4x) mit Asymptoten Gelegentlich kann es notwendig werden, die Auflösung (Voreinstellung: numpoints = 50) zu erhöhen: Mit der Option numpoints kann hier eine Verbesserung erreicht werden. Dies ist besonders für stark gekrümten Bereiche wichtig. Grafische Darstellung (3D) > plot3d(sin(x+y), x=-2..2, y=-1..1) 20 Differentialgleichungen Differentialgleichungen löst man mit dsolve. Für die Formulierung von Anfangsbedingungen ist es günstig, die Lösung als Funktion anzusetzen. Man löst z.B. die Gleichung y'(x) = 2 y(x) durch > > > Man erhält also die allgemeine Lösung (Integrationskonstante _C1) als Gleichung. Die Anfangsbedingung y(0) = 6 wird so eingebaut: > > Und so bekommt man die Lösung als Funktion: > > Für eine Gleichung 2. Ordnung, z.B. die Schwingungsgleichung y‘‘(x) + 2 y(x)=0 sieht das so aus: > > > > > > > > 21