...

MAPLE Maplesoft

by user

on
Category: Documents
13

views

Report

Comments

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
Fly UP