kurzanleitung_maple.mws - [Server 1] - TU Berlin

Werbung
MOSES-Projekt, GL, Juli 2003
Eine Kurzanleitung zu Maple
Wir geben im Folgenden eine kurze Einführung in die Möglichkeiten,
die das Computer Algebra System Maple bietet. Diese Datei
(kuzanleitung_maple.mws) ist eine sogenannte Worksheet Datei und
kann mit Maple gelesen und editiert werden. Ihr erhaltet so die
Gelegenheit diese Datei zu variieren oder zu erweitern, um einen
Zugang zu den vielfältigen Möglichkeiten von Maple zu bekommen.
Als erstes führen wir eine Neustart von Maple durch. Dies leistet
die folgende Zeile.
> restart;
Jede Befehlszeile muss entweder mit einem Semikolon (oder einem
Doppelpunkt) abgeschlossen werden. ENTER veranlasst dann Maple die
aktuelle Zelle (siehe Klammern am linken Rand) auszuführen.
Symbolische, numerische und grafische
Funktionalitäten:
Eines der Hauptmerkmale von Maple, im Vergleich zu Paketen wie
Matlab o. ä., ist die Möglichkeit
symbolisch, d. h. ohne Zahlen
einzusetzen, zu rechnen. Zum Beispiel kann Maple den Ausdruck
(a+b)^2 ausmultiplizieren, ohne zu wissen welche Werte den
Variablen a und b zugewiesen sind. Dazu geben wir diesen Ausdruck
ein und sagen was damit geschehen soll.
> expand((a+b)^2);
a2 + 2 a b + b2
Diese binomische Formel hätten die meißten sicherlich auch im Kopf
gehabt. Die wenigsten werden jedoch die folgende Aufgabe so
schnell bewältigen, wie Maple dies tut.
> expand((a+b+c)^4);
12 a 2 b c + 12 a b c 2 + 12 a b 2 c + 4 a 3 b + 4 a 3 c + 6 a 2 b 2 + 6 a 2 c 2 + 4 a b 3 + 4 a c 3 + 4 b 3 c
+ 6 b 2 c2 + 4 b c3 + a 4 + b 4 + c4
Natürlich kann Maple auch mit Zahlen, d. h.numerisch, rechnen. Der
Befehl evalf dient dazu einen gegebenen Ausdruck beliebig genau
durch eine (endliche) Fließkommazahl zu approximieren. So kann man
zum Beispiel die Quadratwurzel von 2 auf n Dezimalstellen genau
ausrechnen lassen. Sei zum Beispiel n=40:
> evalf(sqrt(2),40);
1.414213562373095048801688724209698078570
In der Tat kann man n beliebig groß wählen. Es ist alles nur eine
Frage der Rechnerleistung (=Zeit die man gewillt ist auf das
Ergebnis zu warten) und des Speicherplatzes (die genaue
Dezimalzahl würde ja unendlich viel Speicherplatz benötigen).
Ein anderer wichtiger Aspekt sind Maples grafische
Funktionalitäten. Als Beispiel lassen wir den Graph der
Sinusfunktion zeichnen:
> plot(sin(x),x=-Pi..Pi,labels=["x","sin(x)"]);
1
sin(x)
–3
–2
0.5
–1
1
x
2
3
–0.5
–1
Definitionen:
Symbole:
Definitionen werden in Maple mit dem ":=" Zeichen gemacht. Das was
links davon steht wird durch das was rechts davon steht definiert.
Zum Beispiel:
> a:=(x+y)^2;
a := (x + y )2
> expand(a);
x2 + 2 x y + y2
Sobald wir obige Zelle durch drücken von ENTER abgeschickt haben,
stößt Maple auf das Symbol
a und sucht in seinem Speicher nach
Informationen über dieses Symbol. Wird eine Definition gefunden, so
wird diese anstelle des Symbols a eingesetzt. Erst dann wird der
aussen stehende Befehl expand ausgeführt. So arbeitet sich Maple
bei jedem eingegebenen Ausdruck, der mit einem Semikolon (oder
Doppelpunkt) abgeschlossen wurde, von Innen nach Aussen durch.
Diesen Prozeß nennt manEvaluation (nach dem englischen Begriff
evaluation).
Eine ganz besondere Rolle kommt Ausdrücken zu, die durch Hochkommas
eingegrenzt sind. Ihre Evaluation resultiert in genau dem
Ausdruck, der in den Hochkommas steht. So haben wir zum Beispiel:
> expand(’a’);
a
So kann jede dem Symbol a zugewiesene Definition durch folgende
trickreiche Zeile gelöscht werden:
> a:=’a’;
a := a
a ist jetzt per Definition eben nur noch gleich a.
Abbildungen:
Eine Abbildung wird in Maple mit einem Rechtspfeil "->
"(Minuszeichen gefolgt von einem Größerzeichen) notiert, wie folgt:
> f:=x->sin(x);
f := sin
f ist nun definiert als die Abbildung, die jedem x den Ausdruck
sin(x) zuweist. Zum Beispiel haben wir:
> f(alpha);
sin(α )
> f(Pi/2);
1
> a:=(x+y)^2;
f(a);
a := (x + y )2
sin((x + y )2 )
Übrigens: SHIFT+RETURN erzeugt einen Zeilenumbruch innerhalb einer
Zelle.
Gleichungen:
Im letzten Abschnitt haben wir die definitorische Gleichheit,
geschrieben mit dem ":=" Zeichen kennengelernt. Eine andere Art
von Gleichheit ist die Gleichheit im Aussagensinne. Sie wird in
Maple mit dem einfachen "=" Zeichen geschrieben.
> eqn:=x^2+p*x+q=0;
eqn := x 2 + p x + q = 0
Das Symbol eqn steht nun für die quadratische Gleichungx^2+p*x+q=0
. Der Befehl solve kann dazu benutzt werden, diese Gleichung nach
x aufzulösen.
> solve(eqn,x);
p
− +
2
p2 − 4 q
p
,− −
2
2
p2 − 4 q
2
Maple gibt die Lösungen dieser Gleichung als eine Sequenz, d. h.
eine durch Kommas getrennte Aufzählung, von Ausdrücken wieder.
Behandelt man die Gleichung als eine Aussage, dann kann Maple
versuchen ihre Wahrheit festzustellen. Dies leistet der Befehl
versuchen ihre Wahrheit festzustellen. Dies leistet der Befehl
evalb. Zum Beispiel:
> evalb(sin(Pi)=0);
true
> p:=evalf(Pi,10);
evalb(sin(p)=0);
p := 3.141592654
false
Wie man erkennt geht Maple hier mit mathematischer Genauigkeit
vor.
Ableitung, Integration, Taylorentwicklung:
Wir betrachten die folgende Funktion f:
> x:=’x’;
f:=x->x^2;
x := x
f := x → x 2
Ableitung nach x:
> diff(f(x),x);
2x
Integration über x von a nach b:
> a:=’a’;
b:=’b’;
int(f(x),x=a..b);
a := a
b := b
b3 a3
−
3
3
Taylorentwicklung der Sinusfunktion um 0 bis zur 10-ten
Ordnung:
> taylor(sin(x),x=0,10);
1
1 5
1
1
x − x3 +
x −
x7 +
x 9 + O(x 10 )
6
120
5040
362880
Achtung: Maple prüft im Allgemeinennicht, ob die Taylorreihe
tatsächlich gegen die entwickelte Funktion konvergiert! (Im
vorliegenden Fall tut sie das natürlich.)
Lösen gewöhnlicher Differenzialgleichungen
(DGL):
Symbolisches Lösen von DGL:
Einige einfache Typen von gewöhnlichen DGL kann Maple symbolisch
lösen. Dazu verwendet man den Befehldsolve. Zum Beispiel:
> t:=’t’;
y:=’y’;
dsolve(diff(y(t),t,t)=-y(t));
t := t
y := y
y(t ) = _C1 sin(t ) + _C2 cos(t )
Der Ausdruck diff(y(t),t,t) steht für die zweite Ableitung vony an
der Stelle t. Die auftretenden Konstanten C1 und C2 müssen aus den
Anfangsdaten bestimmt werden. Auch das kann man automatisch
erledigen lassen, indem man die die Anfangsbedingungen mit angibt.
Dies geschieht in der folgenden Form:
> dsolve({diff(y(t),t,t)=-y(t),y(0)=0,(D(y))(0)=1});
y(t ) = sin(t )
Der Operator D wird hier verwendet um die Ableitung der reinen
Funktion y (ohne Argument) darzustellen.
Vektor- und Matrizenrechnung:
Wir laden zunächst daslinalg Package, welches zahlreiche Befehle
zur Vektor- und Matrizenrechnung bereitstellt.
> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
Insbesondere dient der Befehl vector dazu einen Spaltenvektor zu
definieren.
> x:=vector([1,2]);
x := [1, 2 ]
Obwohl die Darstellung von x vermuten lassen würde, dassx ein
Zeilenvektor ist, handelt es sich in der Tat um einen
Spaltenvektor (siehe hierzu die Berechnung des Produktes von M und
x weiter unten).
Ähnliches leistet der Befehl matrix für Matrizen:
> M:=matrix(2,2,[a,b,c,d]);
a
M := 
c
b


d
Das Produkt der Matrix M mit dem Vektor x (von links) kann man mit
Hilfe des Befehls multiply (aus dem linalg Package), abgekürzt
durch &*, berechnet werden.
> evalm(M &* x);
[a + 2 b, c + 2 d ]
(Man erkennt hier, dass x in der Tat ein Spaltenvektor ist.)
Der inverse Befehl (aus dem linalg Package) erlaubt es die Inverse
einer Matrix zu berechnen, sofern die Matrix invertierbar ist:
> inverse(M);

d

 ad−bc




c
−
 ad−bc
b


a d − b c 



a

ad−bc 
−
Lineare Gleichungssysteme (LGS):
Liegt das LGS in der Form einzelner Gleichungen vor, dann kann der
bereits bekannte solve Befehl benutzt werden um dieses zu lösen:
> x:=’x’:
y:=’y’:
solve({x+2*y=1,2*x+y=2},{x,y});
{y = 0, x = 1 }
Das Ergebnis wird in der Form einzelner Bestimmungsgleichungen für
die Variablen geliefert.
Liegt das LGS in Matrixform vor, dann kann der linsolve Befehl
(aus dem linalg Package) benutzt werden, wie folgt:
> A:=matrix(2,2,[1,2,2,1]);
b:=vector([1,2]);
 1
A := 
 2
2


1
b := [1, 2 ]
> linsolve(A,b);
[1, 0 ]
Die Lösung der VektorgleichungA&*x=b wird nun in Vektorform
ausgegeben.
Zugehörige Unterlagen
Herunterladen