close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

1 Was ist Maple V?

EinbettenHerunterladen
Maple-Schulung
1
Was ist Maple V?
• Maple V ist eine leistungsstarke Software zur L¨osung mathematischer Aufgaben
auf einer Vielzahl von Computersystemen.
• Maple V rechnet genau. Es wird seit Jahren von Informatikern und Mathematikern
weiterentwickelt.
• Maple V ist programmierbar. Durch eine Pascal-a¨hnliche Programmiersprache ko¨nnen eigene Anwendungen geschrieben werden.
• Maple V hat eine umfangreiche Funktionenbibliothek mit mehr als 2500 verschiedenen Funktionen aus den unterschiedlichsten Gebieten.
• Maple V unterstu
¨tzt symbolisches Rechnen, d. h. das Rechnen mit Buchstaben.
In der Algebra arbeitet es mit exakten Zahlen und Funktionen, l¨ost Gleichungen,
sowie Differential- und Rekursionsgleichungen.
• Maple V bew¨altigt sowohl die reelle als auch komplexe numerische Arithmetik.
• Weitere Pakete erweitern die Funktionalit¨at, z. B. fu
¨r Lineare Algebra, Statistik,
...
• Funktionen ko¨nnen graphisch dargestellt werden, sowohl zwei- als auch dreidimensional.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0002)
1
Maple-Schulung
Ferner ist Maple V geeignet fu
¨r algebraische K¨orper, Kombinatorik, komplexe Zahlen,
Differentialformen, endliche K¨orper, formale Logik, Graphentheorie, Gr¨obner Basen,
Gruppentheorie, lineare Optimierung, Zahlentheorie, . . .
2
Verfu
¨ gbarkeit
Maple V ist auf den unterschiedlichsten Rechnern zu Hause. Im Rechenzentrum steht
es unter UNIX und MS-DOS zur Verfu
¨gung.
Es gibt eine Landeslizenz fu
¨r alle Plattformen. Jedes Institut kann Maple V Versionen
im Rahmen dieser Lizenz erhalten.
Es gibt im Buchhandel gu
¨nstige Studentenversionen.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0003)
2
Maple-Schulung
3
Aufruf von Maple V
Maple V steht zur Zeit im Release 4 (3 oder 5) zur Verfu
¨gung.
UNIX
Zeilen-Version
Der Aufruf lautet hier
maple fu
¨r Release 4
XWindows-Version
Der Aufruf lautet hier
xmaple fu
¨r Release 4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0004)
3
Maple-Schulung
MS-DOS
Zeilen-Version
Der Aufruf lautet hier
maple fu
¨r Release 3
Windows-Version
Hier wird, um Maple V zu starten, das Maple-Ikon angeklickt.
Diese Version ist allerdings noch nicht im PC-Pool installiert.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0005)
4
Maple-Schulung
4
Beenden von Maple V
Zum Beenden von Maple V stehen die Befehle quit, done und stop zur Verfu
¨gung.
Syntax:
quit
done
stop
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0006)
5
Maple-Schulung
5
Wie bekomme ich Hilfe?
Maple V hat ein ausfu
¨hrliches Hilfesystem, die Sprache ist Englisch. Es gibt mehrere
Wege, es aufzurufen.
¨
Mit dem Befehl ? erh¨alt man eine Ubersicht,
wie weitere Informationen zu erhalten sind.
Syntax:
oder ?index
?
¨
Mit diesen Methoden erh¨alt man eine Ubersicht
der Beschreibungen. Gibt man noch
ein Stichwort an, erh¨alt man weitere Hilfe zu diesem Stichwort.
Syntax:
?topic
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0007)
6
Maple-Schulung
Fu
¨r topic k¨onnte z. B. quit eingesetzt werden. Fu
¨r manche Stichworte ist die Unterteilung noch weiter verfeinert, daher kann man noch Unterstichworte angeben.
Syntax:
?topic,subtopic
?topic[subtopic]
oder
Alternativ zu ? kann auch der Befehl help verwendet werden.
Syntax:
help();
help(topic);
help(topic,subtopic);
Einige Betriebsysteme bieten weitere und auch komfortablere Mo¨glichkeiten. So kann
man z. B. unter UNIX in der XWindows-Version den Punkt Help anklicken oder unter
MS-DOS mittels der Taste F1 ein Help-Menu
¨ aufrufen.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0008)
7
Maple-Schulung
6
Literatur
[1] Char, et al.: Maple V — Language Reference Manual; Springer-Verlag, 1992,
Isbn 3-540-97622-1.
[2] Char, et al.: Maple V — Library Reference Manual; Springer-Verlag, 1992, Isbn
3-540-97592-6.
[3] Char, et al.: First Leaves — A Tutorial Introduction to Maple V; Springer-Verlag,
1992, Isbn 3-540-97621-3.
[4] Redfern, Darren: The Maple Handbook; Springer-Verlag, 1993, Isbn 3-54094054-5.
[5] Wade, Ellis jr., et al.: Maple V flight manual; Brooks/Cole, 1992, Isbn 0-53417338-1.
[6] Wade, Ellis jr., et al.: Maple V in der mathematischen Anwendung; International
Thomson Publishing, 1994, Isbn 3-929821-21-4.
[7] Burkhardt, Werner: Erste Schritte mit Maple; Springer-Verlag, 1994, Isbn 3-54056649-X.
[8] Kofler, Michael: Maple V, Rel. 4 – Einfu
¨hrung und Leitfaden fu
¨r den Praktiker;
Addison Wesley Verlag, 1996, Isbn 3-89319-903-9.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0009)
8
Maple-Schulung
7
Maple V als Taschenrechner
Maple V beherrscht die Grundrechenarten, das Potenzieren und das Berechnen von
Fakult¨aten:
Addition
+
Subtraktion
−
Multiplikation ∗
Division /
Potenz
∧
Fakult¨at !
Beispiel:
10+20;
30
1.2+1.8;
3.0
40-30;
10
4.5-3.4;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0011)
9
Maple-Schulung
1.1
3*5;
15
1.2*5.1;
6.12
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0011)
10
Maple-Schulung
Beispiel:
6/2;
3
9/1.5;
6.000000000
2^4;
16
1.5^1.5;
1.837117307
10!;
3628800
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0012)
11
Maple-Schulung
Regel:
• Jede Eingabe muß mit einem Semikolon (;) abgeschlossen werden.
• Wird die Eingabe alternativ mit einem Doppelpunkt (:) beendet, unterdru
¨ckt dies
die Ausgabe des Ergebnisses.
• Soll multipliziert werden, muß dazu ein Stern (*) verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0012)
12
Maple-Schulung
Es gilt die in der Mathematik u
¨bliche Regel Punkt vor Strich“. In Klammern stehende
”
Berechnungen werden zuerst ausgefu
¨hrt.
Beispiel:
1+2+3*4;
15
(1+2+3)*4;
24
Beim Rechnen mit rationalen Zahlen (Bru
¨chen) wird das Ergebnis wieder als Bruch
dargestellt, um eine mo¨glichst große Genauigkeit beizubehalten.
Beispiel:
5/2;
5
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0013)
13
Maple-Schulung
Werden bei der Eingabe bereits Gleitkommazahlen benutzt, rechnet Maple V mit solchen
weiter.
Beispiel:
5./2;
2.500000000
5/2.;
2.500000000
Ebenso wie beim Rechnen mit Bru
¨chen, wird beim Rechnen mit Funktionen exakt gerechnet. Auch hier versucht Maple V mo¨glichst genau zu sein.
Beispiel:
sqrt(2);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0014)
14
Maple-Schulung
√
2
Hier wird die Wurzel nicht numerisch berechnet.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0014)
15
Maple-Schulung
Es ist jederzeit m¨oglich, symbolische Ausdru
¨cke numerisch auswerten zu lassen, indem
man mit Gleitkommazahlen arbeitet.
Beispiel:
sqrt(2.);
1.414213562
Allerdings verliert man dann an Genauigkeit, da Darstellungs- und Rundungsfehler gemacht werden.
Beispiel:
sqrt(3)*sqrt(27)-9;
0
sqrt(3.)*sqrt(27.)-9;
.3 10−8
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0015)
16
Maple-Schulung
8
Ergebnisse weiterverwenden
Mit Hilfe der Symbole ", "" und """ kann man auf die Ergebnisse vorhergehender
Berechnungen zugreifen.
"
gibt das letzte Ergebnis zuru
¨ck
"" gibt das vorletzte Ergebnis zuru
¨ck
""" gibt das vorvorletzte Ergebnis zuru
¨ck
Beispiel:
1+2; 2+3; 3+4;
";
3
5
7
7
1+2: 2+3: 3+4:
c
MM
"";
Joachim Lammarsch, URZ, Heidelberg
(map0051)
17
Maple-Schulung
5
1+2: 2+3: 3+4:
""";
3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0051)
18
Maple-Schulung
", "" und """ sind mit Vorsicht anzuwenden. Man erh¨alt nicht immer das gewu
¨nschte
Ergebnis.
Beispiel:
1+2: 2+3: 3+4:
""";
"";
3
7
Es ist besser, das Ergebnis einer Variablen zuzuweisen. In diesem Fall ist der Ru
¨ckgriff
auch nicht auf die drei letzten Ergebnisse beschr¨ankt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0052)
19
Maple-Schulung
9
Variablen
Grundsa¨tzlich kann in Maple V jedes nicht verwendete Symbol in einer Berechnung als
Variable verwendet werden. Um diesen Variablen Werte oder Ausdru
¨cke zuzuweisen,
verwendet man die Anweisung :=.
Beispiel:
a:=3;
a := 3
b:=x^2;
b := x2
c:=(x+y)^2;
c := ( x + y )2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0021)
20
Maple-Schulung
Es ist aber zu beachten, daß viele Kommandos bei den darin verwendeten Variablen
¨
voraussetzen, daß diese Variablen unbelegt sind. M¨ochte man eine Ubersicht
u
¨ber die
verwendeten Variablen bekommen, kann man das Kommando anames verwenden.
Beispiel:
anames();
a, b, c, evalapply
In dieser Auflistung befinden sich neben den Variablen a und b aber auch alle anderen,
die Maple fu
¨r seinen eigenen Bedarf automatisch angelegt hat.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0022)
21
Maple-Schulung
Mo¨chte man nur von einer bestimmten Variablen wissen, ob ihr ein Wert zugewiesen
wurde, verwendet man den Befehl assigned.
Beispiel:
assigned(b);
true
assigned(x);
false
Mo¨chte man eine Variable wieder l¨oschen, d.h. die Wertzuweisung wieder aufheben, muß
man einer Variablen ihren Namen zuweisen.
Beispiel:
b:=’b’;
b := b
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0023)
22
Maple-Schulung
anames();
a, c, evalapply
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0023)
23
Maple-Schulung
Seit Maple V Release 3 wurden die Variablen, die bei Starten von Maple V angelegt
wurden, in das Programm integriert. Daher gibt der Befehl anames() nach dem Programmstart kein Ergebnis zuru
¨ck.
Beispiel:
anames();
Legt man die Variablen a, b und c an, dann werden ausschließlich diese gelistet.
Beispiel:
a:=2;
a := 2
b:=3;
b := 3
c:=4;
c := 4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0024)
24
Maple-Schulung
anames();
a, b, c
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0024)
25
Maple-Schulung
Zum L¨oschen der Variablen wurde zus¨atzlich zur Methode, der Variablen ihren Namen
zuzuweisen, als weitere Alternative der Befehl unassign eingefu
¨hrt.
Syntax:
unassign(variable1,variable2,...)
Beispiel:
unassign(’a’);
anames();
b, c
unassign(’b’,’c’);
anames();
Eine weitere M¨oglichkeit ist der Befehl restart, der allerdings neben dem L¨oschen aller
Variablen auch alle anderen Einstellungen der Maple V-Sitzung auf den Grundzustand
zuru
¨cksetzt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0025)
26
Maple-Schulung
10
Ganzzahlige Division
Zur ganzzahligen Division stehen zwei Befehle zur Verfu
¨gung:
1. Zur Bestimmung des Quotienten.
2. Zur Bestimmung des Divisionsrestes.
iquo
Mit dem Befehl iquo wird der ganzzahlige Quotient der Division bestimmt.
Syntax:
iquo(m,n)
iquo(m,n,’r’)
wobei m durch n dividiert wird.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0236)
27
Maple-Schulung
Beispiel:
iquo(10,3);
3
iquo(-10,3);
−3
iquo(10,3,’r’);
3
r;
1
iquo(-10,3,’r’);
−3
r;
−1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0237)
28
Maple-Schulung
irem
Mit dem Befehl irem wird der Divisionsrest bestimmt.
Syntax:
irem(m,n)
irem(m,n,’q’)
wobei m durch n dividiert wird. Werden drei Parameter angegeben, dann wird in die
angegebene Variable der Quotient abgespeichert.
Beispiel:
irem(10,3);
1
irem(-10,3);
−1
irem(10,-3);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0238)
29
Maple-Schulung
1
irem(10,3,’q’);
1
q;
3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0238)
30
Maple-Schulung
irem(-10,3,’q’);
−1
q;
−3
irem(10,-3,’q’);
1
q;
−3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0239)
31
Maple-Schulung
11
Primzahlen
isprime
Der Befehl isprime u
¨berpru
¨ft eine Zahl daraufhin, ob es sich um eine Primzahl handelt.
Syntax:
isprime(zahl)
Beispiel:
isprime(93);
f alse
isprime(97);
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0301)
32
Maple-Schulung
ithprime
Die Primzahlen bilden eine Zahlenfolge, in der jede eine eindeutig bestimmte Nummer
hat. Mit dem Befehl ithprime kann man sie aufrufen.
Syntax:
ithprime(index)
Beispiel:
ithprime(17)/59;
1
ithprime(1);
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0302)
33
Maple-Schulung
nextprime
Mit dem Befehl nextprime kann man die auf eine ganze Zahl folgende Primzahl erhalten.
Syntax:
nextprime(zahl)
Bemerkung: zahl selbst muß keine Primzahl sein.
Beispiel:
nextprime(0);
2
nextprime(25);
29
nextprime(29);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0303)
34
Maple-Schulung
31
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0303)
35
Maple-Schulung
prevprime
Mit dem Befehl prevprime kann man die einer ganzen Zahl vorhergehende Primzahl
erhalten.
Syntax:
prevprime(zahl)
Bemerkung: zahl selbst muß keine Primzahl sein.
Beispiel:
prevprime(25);
23
prevprime(23);
19
prevprime(0);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0304)
36
Maple-Schulung
Error, (in prevprime) there are no primes
less than 2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0304)
37
Maple-Schulung
12
Rationale Ausdru
¨ cke
Ein rationaler Ausdruck besteht aus Z¨ahler und Nenner:
1234/5678;
617
2839
Den Nenner erh¨alt man mit dem Befehl denom.
denom(");
2839
Den Z¨ahler kann man mit dem Befehl numer erhalten.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0208)
38
Maple-Schulung
numer("");
617
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0208)
39
Maple-Schulung
13
Gleitkommazahlen
Sie werden auf Grund ihrer Schreibweise auch sehr oft Gleitpunktzahlen genannt. Dargestellt werden sie wie folgt:
ganze Zahl.ganze Zahl
ganze Zahl.
.ganze Zahl
d.h. als eine Folge von Dezimalziffern mit Dezimalpunkt.
Beispiel:
1234.5678;
1234.5678
1234.;
1234.
.1234;
.1234
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1031)
40
Maple-Schulung
Float
Allgemein kann jede Gleitkommazahl mit Hilfe des Befehls Float erzeugt werden.
Syntax:
Float(mantisse,exponent);
wobei der Parameter exponent der Exponent zur Basis 10 ist.
Beispiel:
Float(1234.5678,20);
Float(1234.5678, 20)
Float(1.2345678,23);
Float(1.2345678, 23)
Float(12345678.,16);
Float(.12345678 108 , 16)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0031)
41
Maple-Schulung
14
Rechengenauigkeit
Die Rechengenauigkeit bei Gleitkommazahlen (Gleitpunktzahlen) betr¨agt bei Maple V
standardm¨aßig 10 Stellen und wird durch die Systemvariable Digits festgelegt. Sie kann
¨
leicht durch eine Anderung
des Wertes von Digits auf einen anderen Wert eingestellt
werden.
Beispiel:
Digits;
10
sqrt(3.)*sqrt(27.)-9;
.3 10−8
Digits:=50;
Digits := 50
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0031)
42
Maple-Schulung
sqrt(3.)*sqrt(27.)-9;
0
Dies hat Auswirkungen auf den absoluten Fehler bei numerischen Berechnungen. Es hat
keine Auswirkungen auf das Auftreten von Darstellungs- und Rundungsfehler.
Beispiel:
sqrt(2.)*sqrt(8.)-4;
−.1 10−48
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0032)
43
Maple-Schulung
Digits hat keinen Einfluß auf die Genauigkeit beim symbolischen Rechnen. Hier wird
immer mit absoluter Genauigkeit gerechnet. Daher bevorzugt Maple V immer diese
Methode.
Beispiel:
100!;
933262154439441526816992388562667004907159682643\
8162146859296389521759999322991560894146397\
6156518286253697920827223758251185210916864\
0000000000000000000000
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0032)
44
Maple-Schulung
15
Numerische Auswertung
Zur numerischen Auswertung symbolischer Ausdru
¨cke verwendet man den Befehl evalf
(evaluate floating point).
Syntax:
evalf(ausdruck);
In der durch Digits voreingestellten Genauigkeit wird der Ausdruck berechnet.
Beispiel:
evalf(5/2);
2.500000000
evalf(1/7);
.1428571429
evalf(sqrt(2));
1.414213562
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0041)
45
Maple-Schulung
evalf(sqrt(3))*evalf(sqrt(27))-9;
.4 10−8
Mo¨chte man ein Ergebnis h¨oherer Genauigkeit, kann man bei evalf einen weiteren
Parameter stellen angeben.
Syntax:
evalf(ausdruck,stellen);
In der durch den Parameter stellen angegeben Anzahl von Dezimalstellen wird das
Ergebnis ausgegeben.
Beispiel:
evalf(2/5,50);
.40000000000000000000000000000000000000000000000000
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0042)
46
Maple-Schulung
evalf(1/7,50);
.14285714285714285714285714285714285714285714285714
evalf(sqrt(2),50);
1.4142135623730950488016887242096980785696718753769
evalf(Pi,50);
3.1415926535897932384626433832795028841971693993751
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0042)
47
Maple-Schulung
Nicht in jedem Fall erreicht man durch eine gr¨oßere Stellenzahl ein besseres Ergebnis.
Beispiel:
evalf(sqrt(3),50)*evalf(sqrt(27),50)
-evalf(9,50);
.3 10−8
evalf(sqrt(3),150)*evalf(sqrt(27),150)
-evalf(9,150);
.3 10−8
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0043)
48
Maple-Schulung
Maple V rechnet wenn m¨oglich symbolisch.
Beispiel:
evalf(sqrt(3)*sqrt(27)-9,50);
0
Eine nachtr¨agliche Vergr¨oßerung der Stellenzahl durch evalf vergr¨oßert aber nicht in
jedem Fall die Genauigkeit des Ergebnisses.
Beispiel:
qw:=evalf(sqrt(2));
qw := 1.414213562
evalf(1/qw^2,50);
.50000000026381803913919991547705793946024635015556
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0044)
49
Maple-Schulung
Dagegen ergibt die sofortige Vergr¨oßerung der Stellenzahl ein besseres Ergebnis.
Beispiel:
evalf(sqrt(2),50);
1.4142135623730950488016887242096980785696718753769
evalf(1/"^2,50);
.50000000000000000000000000000000000000000000000004
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0044)
50
Maple-Schulung
16
Umwandeln in ganze Zahlen
Es gibt mehrere M¨oglichkeiten, reelle Zahlen in ganze Zahlen umzuwandeln:
1. Durch Abschneiden der Nachkommastellen:
123.567 ❀
123
−123.567 ❀ −123
2. Durch Runden der Nachkommastellen:
123.567 ❀
124
−123.567 ❀ −124
3. Durch Runden auf die n¨achstkleinere ganze Zahl:
123.567 ❀
123
−123.567 ❀ −124
4. Durch Runden auf die n¨achstgr¨oßere ganze Zahl:
123.567 ❀
124
−123.567 ❀ −123
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0231)
51
Maple-Schulung
trunc
Mit dem Befehl trunc werden die Nachkommastellen einer Zahl abgeschnitten.
Syntax:
trunc(ausdruck)
wobei ausdruck ein numerisches Argument darstellt.
Es wird dadurch immer in Richtung 0 gerundet (d. h. bei positiven Zahlen wird die
n¨achstkleinere, bei negativen Zahlen wird die n¨achstgr¨oßere zuru
¨ckgegeben.
Beispiel:
trunc(10/3);
3
trunc(-10/3);
−3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0233)
52
Maple-Schulung
round
Mit dem Befehl round wird zur n¨achsten ganzen Zahl auf- bzw. abgerundet.
Syntax:
round(ausdruck)
Es gelten die beim Runden u
¨blichen Regeln. Ab .5 wird zur na¨chsten gro¨ßeren ganzen
Zahl aufgerundet, ab −.5 wird zur n¨achsten kleineren ganzen Zahl abgerundet.
Beispiel:
round(10/3);
3
round(11/3);
4
round(-10/3);
−3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0234)
53
Maple-Schulung
floor
Mit dem Befehl floor wird zur n¨achstkleineren ganzen Zahl gerundet.
Syntax:
floor(ausdruck)
Beispiel:
floor(10/3);
3
floor(-10/3);
−4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0234)
54
Maple-Schulung
ceil
Mit dem Befehl ceil wird zur n¨achstgr¨oßeren ganzen Zahl gerundet.
Syntax:
ceil(ausdruck)
Beispiel:
ceil(10/3);
4
ceil(-10/3);
−3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0401)
55
Maple-Schulung
17
Komplexe Zahlen
Eine komplexe Zahl wird dargestellt durch:
Realteil ± Imagin¨arteil · I
√
wobei I = −1 ist.
In Maple V wird daher eine komplexe Zahl ebenfalls durch
realteil + imagin¨
areil * I
oder
realteil - imagin¨
arteil * I
dargestellt.
Beispiel:
2+3*I;
2 + 3I
(1-I)^4;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0401)
56
Maple-Schulung
−4
(4-2*I)^3;
16 − 88 I
(3+I)/(2-I);
1+I
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0401)
57
Maple-Schulung
Realteil einer komplexen Zahl
Syntax:
Re(z)
wobei z eine komplexe Zahl ist.
Beispiel:
z1:=3+4*I;
z1 := 3 + 4 I
z2:=22-55*I;
z2 := 22 − 55 I
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0402)
58
Maple-Schulung
Re(z1);
3
Re(z2);
22
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0402)
59
Maple-Schulung
Imagin¨
arteil einer komplexen Zahl
Syntax:
Im(z)
wobei z eine komplexe Zahl ist.
Beispiel:
z1:=5-8*I;
z1 := 5 − 8 I
z2:=45+89*I;
z2 := 45 + 89 I
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0403)
60
Maple-Schulung
Im(z1);
−8
Im(z2);
89
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0403)
61
Maple-Schulung
18
Konstanten
Maple V besitzt folgende vordefinierte Konstanten:
Catalan
E
gamma
Pi
I
infinity
Catalan Konstante
Eulersche Zahl
Eulersche Konstante
Kreisteilungszahl
imagin¨are Einheit
der Wert unendlich
Beispiel:
evalf(Catalan);
.9159655942
evalf(E);
2.718281828
evalf(gamma);
.5772156649
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0061)
62
Maple-Schulung
evalf(Pi);
3.141592654
Eine Liste der Konstanten, die in Maple V vordefiniert sind, kann mit constants ermittelt werden.
Beispiel:
constants;
false, γ, ∞, true, Catalan, E, FAIL, π
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0062)
63
Maple-Schulung
19
Symbolisches Rechnen
Eine der wichtigsten Anwendungen von Maple V ist das Rechnen mit Symbolen. Statt
mit konkreten Zahlen kann Maple V ebenso mit Buchstaben rechnen.
Beispiel:
x+x+x+y+y+z;
3x + 2y + z
(x-y-z)+(x-y-z);
2x − 2y − 2z
2*(x-y)-(2*y);
2x − 4y
2*x/x*y;
2y
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0016)
64
Maple-Schulung
2*x^2*y^2/(x*y)^2;
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0016)
65
Maple-Schulung
20
Vereinfachung und Umformung
simplify
Da Maple V einen Befehl nicht immer sofort auswertet und eine Vereinfachung liefert,
kann man mit dem Befehl simplify dies erreichen.
Syntax:
simplify(ausdruck)
Beispiel:
sin(x)^2+cos(x)^2;
sin( x )2 + cos( x )2
simplify(");
1
exp(a*ln(b));
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0122)
66
Maple-Schulung
e( a ln( b ) )
simplify(");
ba
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0122)
67
Maple-Schulung
Nicht immer liefert simplify eine Vereinfachung.
Beispiel:
(x-2)*(x+2)*(x^2+4);
( x − 2 ) ( x + 2 ) ( x2 + 4 )
simplify(");
( x − 2 ) ( x + 2 ) ( x2 + 4 )
(x-1)^10+1;
( x − 1 )10 + 1
simplify(");
x10 − 10x9 + 45x8 − 120x7 + 210x6 − 252x5 +
210x4 − 120x3 + 45x2 − 10x + 2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0128)
68
Maple-Schulung
normal
Mit dem Befehl normal werden Ausdru
¨cke in ihre Normalform umgewandelt.
Syntax:
normal(ausdruck)
Beispiel:
(x^3+2*x^2-9*x-18)/(2*x^2-2*x-12);
x3 + 2 x2 − 9 x − 18
2 x2 − 2 x − 12
normal(");
1
3
x+
2
2
Bei Bru
¨chen wird der Ausdruck auf einen gemeinsamen Nenner gebracht und mehrfach
auftretende Faktoren werden geku
¨rzt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0129)
69
Maple-Schulung
Beispiel:
(2*x^2-2*x-12)/(x^3+2*x^2-9*x-18);
2 x2 − 2 x − 12
x3 + 2 x2 − 9 x − 18
normal(");
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0129)
1
x+3
70
Maple-Schulung
expand
Maple V multipliziert Produkte in der Regel nicht aus. Dies kann aber durch den Befehl
expand erreicht werden. Bei Bru
¨chen wirkt expand nur auf die Z¨ahler.
Syntax:
expand(ausdruck)
Beispiel:
x*(x-a)^2*(x-b)^3;
x ( x − a )2 ( x − b )3
expand(");
x6 − 3x5 b + 3x4 b2 − x3 b3 − 2x5 a + 6x4 ab −
6x3 ab2 + 2x2 ab3 + a2 x4 − 3a2 x3 b + 3a2 x2 b2
−xa2 b3
(x-a)^2/(x+b)^3;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0124)
71
Maple-Schulung
(x − a)2
(x + b)3
expand(");
x2
xa
a2
−2
+
( x + b )3
( x + b )3 ( x + b )3
Eine ¨ahnliche Wirkung hat expand auf Potenzen und Logarithmen.
Beispiel:
a^(b+c^(d+e*f));
( d+e f )
)
d (ef )
)
a( b+c
expand(");
ab a( c
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0125)
c
72
Maple-Schulung
log(a*b);
ln( a b )
expand(");
ln( a ) + ln( b )
log(a^b);
ln( ab )
expand(");
b ln( a )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0125)
73
Maple-Schulung
factor
factor ist das Gegenstu
¨ck zu expand. Mit seiner Hilfe werden Summen von Termen in
Produkte verwandelt.
Syntax:
factor(ausdruck)
Beispiel:
61*x-22*x^2-20-2*x^3+x^4;
61 x − 22 x2 − 20 − 2 x3 + x4
factor(");
( x − 4 ) ( x + 5 ) ( x2 − 3 x + 1 )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0126)
74
Maple-Schulung
x^4 - 4 * x^3 * b + 4 * x^2
* b^2 + x^3 * a - 4 * x^2 *
a * b + 4 * x * a * b^2;
x 4 − 4 x 3 b + 4 x 2 b 2 + x 3 a − 4 x 2 a b + 4 x a b2
factor(");
x ( x − 2 b )2 ( x + a )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0126)
75
Maple-Schulung
Bru
¨che werden in ihre Normalform umgewandelt und anschließend in ihre Faktoren
zerlegt.
Beispiel:
(x^2+x-6)/(x^2-1);
x2 + x − 6
x2 − 1
factor(");
(x + 3)(x − 2)
(x − 1)(x + 1)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0127)
76
Maple-Schulung
21
Substitution von Variablen
Mit dem Kommando subs k¨onnen in einer Variablen vorl¨
aufig Werte oder beliebige
Ausdru
¨cke eingesetzt werden. subs kann beliebig viele Argumente haben, die in dem
Ausdruck ersetzt werden.
Syntax:
subs(var1=wert1,var2=wert2,...,ausdruck)
Beispiel:
subs(x=10,x^2+2*x+1);
121
subs(a=4,b=5,a^2+2*a*b+b^2);
81
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0072)
77
Maple-Schulung
Wenn mehrere Substitutionen gleichzeitig“ durchgefu
¨hrt werden, ist Vorsicht ange”
bracht, da subs die Substitutionen normalerweise nacheinander ausfu
¨hrt. Wenn eine
gleichzeitige Bearbeitung erforderlich ist, z. B. wenn ein Vertauschen der Variablen auftritt, mu
¨ssen die Substitutionsanweisungen in geschweifte Klammern eingeschlossen werden.
Beispiel:
subs(a=b^2,b=a^2,sqrt(a)+sqrt(b));
√
a4 +
√
a2
subs(b=a^2,a=b^2,sqrt(a)+sqrt(b));
√
b2 +
√
b4
subs({a=b^2,b=a^2},sqrt(a)+sqrt(b));
√
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0072)
b2
+
√
a2
78
Maple-Schulung
Mit subs ist es auch m¨oglich, ganze Ausdru
¨cke durch andere Werte zu ersetzen. Dies
funktioniert allerdings nur dann, wenn der zu ersetzende Ausdruck eine Einheit darstellt.
Beispiel:
subs(x+y=9,sqrt(x+y));
√
9
subs(x+y=9,sqrt(x+y)^2+2*sqrt(x+y)+1);
√
x+y+2 9+1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0073)
79
Maple-Schulung
Stellt dagegen der zu ersetzende Ausdruck keine abgeschlossene Einheit dar, wird er
nicht ersetzt.
Beispiel:
subs(x+y=9,sqrt(x+y+z));
√
x+y+z
subs(x+y=9,z^2+6*z+x+y);
z2 + 6 z + x + y
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0073)
80
Maple-Schulung
Die Beispiele zeigen deutlich, daß der Befehl subs nicht alle m¨oglichen Ersetzungen
unterstu
¨tzen kann. Ab Maple V Release 4 gibt es einen verbesserten Befehl namens
algsubs.
Syntax:
algsubs(var1=wert1,var2=wert2,...,ausdruck)
Beispiel:
algsubs(x+y=9,sqrt(x+y+z));
√
9+z
algsubs(x+y=9,z^2+x+y+6*z);
z2 + 9 + 6 z
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1074)
81
Maple-Schulung
22
Interne Variable
In vielen F¨allen wird Maple V bei Bedarf selbst eigene Variablen anlegen. Diese stellen
¨
kein Problem dar, da die Wahrscheinlichkeit gering ist, daß es zu Uberschneidungen
kommt. In der Regel werden die Variablen von Maple V gegen ein Ver¨andern geschu
¨tzt.
Beispiel:
anames();
algsubs(x+y=1,x+y+z);
1+z
anames();
collect/series, algsubs/reduce, collect/recursive,
algsubs/exact, algsubs/match, collect/distributed ,
algsubs/expanded , algsubs/algsubs, algsubs/dogenrem,
type/lhsargs, algsubs/terms, algsubs/recurse,
algsubs/headtermcoeff , collect/coeffs, algsubs/genrem
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0081)
82
Maple-Schulung
23
Maßeinheiten
Maple V ist in der Lage, die Maßeinheiten von Gr¨oßen mitzufu
¨hren. Sie werden als
Namen betrachtet und in die Rechnung miteinbezogen.
Beispiel:
Die Fl¨ache eines Rechtecks berechnet sich nach der Formel:
F l¨
ache = L¨
ange · Breite
laenge:=10*m;
laenge := 10 m
breite:=5*m;
breite := 5 m
flaeche:=laenge*breite;
f laeche := 50 m2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0074)
83
Maple-Schulung
Aufgabe:
Berechnen Sie den Umfang eines Kreises mit einem Radius von 10 cm.
L¨
osung:
Der Umfang eines Kreises berechnet sich nach der Formel:
U = 2πr
Mit Hilfe von Maple V k¨onnte die L¨osung wie folgt aussehen:
U:=2*Pi*r;
U := 2 π r
r:=10*cm;
r := 10 cm
U;
20 π cm
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0074)
84
Maple-Schulung
evalf(");
62.83185308 cm
r;
10 cm
r:=’r’;
r := r
U;
2πr
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0075)
85
Maple-Schulung
oder:
U:=2*Pi*r;
U := 2 π r
subs(r=10*cm,U);
20 π cm
evalf(");
62.83185308 cm
r;
r
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0075)
86
Maple-Schulung
oder noch einfacher:
subs(r=10*cm,2*Pi*r);
20 π cm
r;
r
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0075)
87
Maple-Schulung
Beispiel:
Die Fl¨ache eines Kreises berechnet sich nach der Formel:
F l¨
ache = π · Radius2
radius:=5*cm;
radius := 5 cm
flaeche:=Pi*radius^2;
f laeche := 25πcm2
evalf(");
78.53981635cm2
Mit ein wenig Arbeit kann man auch Maße von einer Einheit in eine andere umrechnen.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0083)
88
Maple-Schulung
Beispiel:
Eine Geschwindigkeit von 10 km/h soll in m/s umgerechnet werden.
v:=10*km/h;
v := 10
km
h
km:=1000*m;
km := 1000 m
h:=3600*s;
h := 3600 s
v;
25 m
9 s
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0101)
89
Maple-Schulung
24
Folgen
Eine Folge ist eine Auflistung von Zahlen, die durch Kommata getrennt werden.
Beispiel:
f1:=1,3,5,7,9,11,13;
f 1 := 1, 3, 5, 7, 9, 11, 13
f2:=2,4,6,8,10,12,14;
f 2 := 2, 4, 6, 8, 10, 12, 14
f3:=10,20,30,40,50,60,70;
f 3 := 10, 20, 30, 40, 50, 60, 70
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0101)
90
Maple-Schulung
Zum Erzeugen endlicher Folgen wird der Befehl seq verwendet.
Syntax:
seq(ausdruck,variable=a..b)
Es wird eine Folge von Ausdru
¨cken erzeugt, wobei die Werte a, a + 1, . . . , b fu
¨r die
Variable eingesetzt werden.
Beispiel:
seq(i,i=1..10);
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
seq(i^2,i=1..10);
1, 4, 9, 16, 25, 36, 49, 64, 81, 100
seq(sin(Pi/6*i),i=1..6);
1 1√
1√ 1
,
3, 1,
3, , 0
2 2
2
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0111)
91
Maple-Schulung
25
Listen
Listen sind fu
¨r Maple V eine Zusammenfassung von Objekten, die durch Kommata
getrennt und in eckigen Klammern eingeschlossen werden.
Beispiel:
l1:=[10,20,30,40,50];
l1 := [ 10, 20, 30, 40, 50 ]
l2:=[x,x^2,x^3,x^4,x^5];
l2 := [ x, x2 , x3 , x4 , x5 ]
l3:=[a+b,b+c,c+d,d+e,e+f];
l3 := [ a + b, b + c, c + d, d + e, e + f ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0111)
92
Maple-Schulung
Die Anzahl der Elemente einer Liste erh¨alt man durch den Befehl nops.
Syntax:
nops(liste)
Beispiel:
l1:=[a+b,b+c,c+d,d+e,e+f];
l1 := [ a + b, b + c, c + d, d + e, e + f ]
nops(l1);
5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0117)
93
Maple-Schulung
Auf einzelne Elemente einer Liste kann man mit dem Befehl op zugreifen.
Syntax:
op(zahl,liste)
Der Befehl op gibt das Element der Liste liste an der Position zahl zuru
¨ck.
Beispiel:
op(2,l1);
20
op(2,l2);
x2
op(4,l3);
d+e
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0112)
94
Maple-Schulung
Alternativ kann der Listenname mit einem Index verwendet werden.
Beispiel:
l1[3];
30
l2[3];
x3
l3[3];
c+d
l3[5];
e+f
Allerdings kann die Schreibweise mit Indizes nicht in jeder Umgebung angewendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0113)
95
Maple-Schulung
Mo¨chte man einen Teil der Liste ausw¨ahlen, wird der Befehl op mit folgender Schreibweise angewendet:
Syntax:
op(zahl1..zahl2,liste)
Hier wird die Teilliste von der Position zahl1 bis zur Position zahl2 ausgewa¨hlt.
Beispiel:
op(2..4,l1);
20, 30, 40
op(2..5,l2);
x 2 , x 3 , x 4 , x5
op(1..3,l3);
a + b, b + c, c + d
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0115)
96
Maple-Schulung
Das Ergebnis ist allerdings keine Liste, sondern eine Folge von Elementen.
M¨ochte man wieder eine Liste erzeugen, muß das Ergebnis wiederum in eckigen Klammern eingeschlossen werden.
Beispiel:
l1:=[10,20,30,40,50];
l1 := [ 10, 20, 30, 40, 50 ]
l2:=[x,x^2,x^3,x^4,x^5];
l2 := [ x, x2 , x3 , x4 , x5 ]
l3:=[a+b,b+c,c+d,d+e,e+f];
l3 := [ a + b, b + c, c + d, d + e, e + f ]
[op(1..3,l1)];
[ 10, 20, 30 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0115)
97
Maple-Schulung
[op(2..4,l2)];
[ x 2 , x3 , x4 ]
[op(3..5,l3)];
[ c + d, d + e, e + f ]
Ohne Angabe eines Bereichs wird der ganze Inhalt der Liste ausgewa¨hlt.
Beispiel:
op(l1);
10, 20, 30, 40, 50
op(l2);
x, x2 , x3 , x4 , x5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0116)
98
Maple-Schulung
Mo¨chte man die Listen l1 und l2 zu einer neuen Liste ll zusammenfassen, geht man
wie folgt vor:
Beispiel:
ll:=[op(l1),op(l2)];
ll := [ 10, 20, 30, 40, 50, x, x2 , x3 , x4 , x5 ]
Elemente einer Liste werden ersetzt, indem man die Liste in Teillisten zerlegt und danach
wieder zusammensetzt.
Um das dritte und vierte Listenelement durch y3, y4 zu ersetzen, geht man wie folgt
vor:
Beispiel:
l:=[x1,x2,x3,x4,x5,x6];
l := [x1 , x2 , x3 , x4 , x5 , x6 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0118)
99
Maple-Schulung
l1:=[op(1..2,l),y3,y4,op(5..6,l)];
l1 := [x1 , x2 , y3 , y4 , x5 , x6 ]
Um das dritte und vierte Listenelement zu entfernen, werden nur die beiden Teillisten
zusammengesetzt:
Beispiel:
l2:=[op(1..2,l),op(5..6,l)];
l2 := [x1 , x2 , x5 , x6 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1118)
100
Maple-Schulung
Ebenfalls ist es m¨oglich, Listenelemente durch Unterlisten zu ersetzen:
Beispiel:
l:=[[x1,x2],[x3,x4]];
l := [[x1 , x2 ], [x3 , x4 ]]
Um auf die Listenelemente der Unterlisten zuzugreifen, muß der Befehl op mehrfach
angewendet werden.
Beispiel:
u2:=op(2,l);
u2 := [x3 , x4 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1118)
101
Maple-Schulung
u21:=op(1,u2);
u21 := x3
u22:=op(2,u2);
u22 := x4
u22:=op(2,op(2,l));
u22 := x4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0119)
102
Maple-Schulung
Anstelle der Zerlegung in Teillisten, kann zum Modifizieren von Listen der Befehl subsop
verwendet werden.
Zum Austausch des zweiten Listenelementes durch z2 und des fu
¨nften Listenelementes
durch z5 ist der folgende Befehl erforderlich:
Beispiel:
l:=[x1,x2,x3,x4,x5,x6];
l := [x1 , x2 , x3 , x4 , x5 , x6 ]
l3:=subsop(2=z2,5=z5,l);
l3 := [x1 , z2 , x3 , x4 , z5 , x6 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0119)
103
Maple-Schulung
Mo¨chte man das zweite und fu
¨nfte Listenelement entfernen, ist der folgende Befehl
anzuwenden:
Beispiel:
l4:=subsop(2=NULL,5=NULL,l);
l4 := [x1 , x3 , x4 , x6 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1119)
104
Maple-Schulung
Um Listenelemente durch Unterlisten zu ersetzen, wird der Befehl subsop folgendermaßen eingesetzt:
Beispiel:
m:=[x1,x2];
m := [x1 , x2 ]
subsop(1=[y1,y2],2=[y3,y4],m);
[[y1 , y2 ], [y3 , y4 ]]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1119)
105
Maple-Schulung
Ebenfalls ist es m¨oglich, Listenelemente in Unterlisten zu ersetzen:
Beispiel:
l:=[[x1,x2],[x3,x4]];
l := [[x1 , x2 ], [x3 , x4 ]]
subsop([1,2]=z2,[2,2]=z4,l);
[[x1 , z2 ], [x3 , z4 ]]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1119)
106
Maple-Schulung
26
Mengen
In Maple V werden Objekte von Mengen durch Kommata voneinander getrennt und in
geschweiften Klammern eingeschlossen.
Beispiel:
m1:={1,2,a,b};
m1 := { 1, 2, b, a }
Die Reihenfolge wird von Maple V intern festgelegt. Kommen Objekte mehrfach vor,
werden sie nur einmal aufgefu
¨hrt.
Beispiel:
m2:={b,a,1,2,1,2};
m2 := { 1, 2, b, a }
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0092)
107
Maple-Schulung
Als Operatoren fu
¨r Mengen stehen die Befehle
union
fu
¨r die Vereinigungsmenge
intersect fu
¨r die Schnittmenge
minus
fu
¨r die Differenz
zur Verfu
¨gung.
Beispiel:
m3:={1,2,a,b};
m3 := { 1, 2, b, a }
m4:={17,x,a,y,x};
m4 := { 17, x, a, y }
m3 union m4;
{ 1, 2, 17, x, b, a, y }
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0092)
108
Maple-Schulung
m3 intersect m4;
{a}
m3 minus m4;
{ 1, 2, b }
Der Befehl seq kann verwendet werden, um Mengen zu bilden.
Beispiel:
{seq(i,i=1..10)};
{ 1, 2, 10, 7, 8, 9, 3, 4, 5, 6 }
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0093)
109
Maple-Schulung
Wenn gleiche Objekte in Mengen auftreten, werden sie nur einmal aufgefu
¨hrt.
Beispiel:
seq({i,5-i},i=1..5);
{ 1, 4 }, { 2, 3 }, { 2, 3 }, { 1, 4 }, { 0, 5 }
{seq({i,5-i},i=1..5)};
{ { 1, 4 }, { 2, 3 }, { 0, 5 } }
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0420)
110
Maple-Schulung
27
Extrahieren von Operanden
Mo¨chte man aus einem Ausdruck Operanden extrahieren, kann man den Befehl op
verwenden.
Syntax:
op(position,ausdruck)
Fu
¨r den Parameter position kann angegeben werden:
• n
– Der n-te Operand wird ausgegeben.
• m..n
– Vom m-ten bis zum n-ten Operand werden alle Operanden ausgegeben.
• liste
– Liste von Positionen in verschachtelten Ausdru
¨cken.
Der Befehl op ist u.a. auf Listen, Mengen und algebraische Terme anwendbar.
Listen
Innerhalb einer Liste hat jedes Element eine feste Position, mit welcher es identifiziert
werden kann.
Bei Listen, die Unterlisten enthalten, wird der Befehl op mehrfach angewendet.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0421)
111
Maple-Schulung
Beispiel:
l1:=[1,2,3,4,5];
l1 := [1, 2, 3, 4, 5]
op(2,l1);
2
l2:=[[1,2,3],[4,5,6]];
l2 := [[1, 2, 3], [4, 5, 6]]
op(2,op(1,l2));
2
Vereinfacht wird dieser Zugriff, wenn man eine Liste von Positionen in den Unterlisten
verwendet.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0422)
112
Maple-Schulung
Beispiel:
l2:=[[1,2,3],[4,5,6]];
l2 := [[1, 2, 3], [4, 5, 6]]
op([2,3],l2);
6
Bei tiefer verschachtelten Listen erfolgt der Zugriff analog.
Beispiel:
l3:=[[[1,2,3],[11,12,13]],[[4,5,6],[44,55,66]]];
l3 := [[[1, 2, 3], [11, 12, 13]], [[4, 5, 6], [44, 55, 66]]]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0422)
113
Maple-Schulung
op([2],l3);
[[4, 5, 6], [44, 55, 66]]
op([2,1],l3);
[4, 5, 6]
op([2,1,3],l3);
6
Da auch bei Mengen den Elementen eine Position zugeordnet ist, kann der Befehl op
zum Zugriff auf einzelne Elemente verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0423)
114
Maple-Schulung
Beispiel:
m:={2,4,6,a,b,c};
m := {2, 4, 6, a, b, c}
op(3,m);
6
Des weiteren ist der Zugriff auf Elementen in Mengen, die Untermengen enthalten,
m¨oglich.
Beispiel:
m2:={{1,2,3},{4,5,6}};
m2 := {{1, 2, 3}, {4, 5, 6}}
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0423)
115
Maple-Schulung
op(1,m2);
{1, 2, 3}
op([2,2],m2);
5
Ebenfalls den Glieder eines algebraischen Terms kann eine Position zugeordnet werden.
Dadurch wird der Zugriff auf die einzelnen Glieder mittels des Kommandos op m¨oglich.
Beispiel:
p:=x^3+2*x^2+4*x-5;
p := x3 + 2 x2 + 4 x − 5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0424)
116
Maple-Schulung
op(2,p);
2 x2
op(2,op(2,p));
x2
op(1,op(2,op(2,p)));
x
Verwendet man fu
¨r die Positionen eine Liste, wird die Schreibweise vereinfacht.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0425)
117
Maple-Schulung
Beispiel:
p:=x^3+2*x^2+4*x-5;
p := x3 + 2 x2 + 4 x − 5
op([2],p);
2 x2
op([2,2],p);
x2
op([2,2,1],p);
x
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0410)
118
Maple-Schulung
28
Anzahl der Operanden
Um die Anzahl der Operanden eines Ausdrucks zu ermitteln, steht der Befehl nops zur
Verfu
¨gung.
Syntax:
nops(ausdruck)
Der Parameter ausdruck steht hierbei fu
¨r ein Datum, das abz¨ahlbar ist, beispielsweise
eine Liste:
Beispiel:
l1:=[1,2,3,4,5];
l1 := [1, 2, 3, 4, 5]
nops(l1);
5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0410)
119
Maple-Schulung
l2:=[[1,2,3],[4,5,6]];
l2 := [[1, 2, 3], [4, 5, 6]]
nops(l2);
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0411)
120
Maple-Schulung
eine Menge:
Beispiel:
m:={2,4,6,a,b,c};
m := {2, 4, 6, a, b, c}
nops(m);
6
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0411)
121
Maple-Schulung
oder ein algebraischer Term:
Beispiel:
p:=x^3+2*x^2+4*x-5;
p := x3 + 2 x2 + 4 x − 5
nops(p);
4
nops(op(2,p));
2
nops(op(2,op(2,p)));
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0241)
122
Maple-Schulung
29
Tabellen
Tabellen stellen einen allgemeingu
¨ltigen Datentyp dar. Der Zugriff auf die Elemente
einer Tabelle erfolgt nicht u
¨ber eine Positionsangabe sondern u
¨ber einen eindeutigen
Index.
Als Indizes sind beliebige Ausdru
¨cke erlaubt, z. B. ganze Zahlen, Gleitpunktzahlen oder
Zeichenketten. Es sind aber auch Gleichungen, Formeln oder a¨hnliches erlaubt.
Der Aufbau von Tabellen erfolgt mit dem Kommando table.
Syntax:
table(liste)
wobei liste eine Liste von Gleichungen, eine Liste von Werten oder eine Liste von
Listen ist. Ist eine Liste von Gleichungen gegeben, wird die linke Seite als Index benutzt,
ansonsten wird eine Liste gebildet mit Indizes 1, 2, 3, . . . .
Wenn keine Liste angeben ist, wird eine leere Tabelle gebildet.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0242)
123
Maple-Schulung
Beispiel:
A:=table();
A := table([
])
B:=table([22,33,44]);
B := table([
1 = 22
2 = 33
3 = 44
])
C:=table([(2)=12,(4)=34,(6)=56]);
C := table([
2 = 12
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0242)
124
Maple-Schulung
4 = 34
6 = 56
])
Maple V fu
¨hrt keine automatische Auswertung von Tabellen aus. M¨ochte man den Inhalt
einer Tabelle anzeigen lassen, muß man den Befehl eval benutzen.
Beispiel:
A;
A
eval(A);
table([
])
eval(B);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0243)
125
Maple-Schulung
table([
1 = 22
2 = 33
3 = 44
])
eval(C);
table([
2 = 12
4 = 34
6 = 56
])
X:=table([sin(x)=Pi,x+y=2]);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0244)
126
Maple-Schulung
X := table([
sin( x ) = π
x+y =2
])
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0245)
127
Maple-Schulung
Mo¨chte man auf die Elemente einer Tabelle zugreifen, ist der Tabellenname und der
Index (in eckigen Klammern) anzugeben.
Beispiel:
B[2];
33
C[4];
34
X[x+y];
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0246)
128
Maple-Schulung
Wenn einem Index kein Wert zugewiesen wurde, wird der Tabellenname mit Index
ausgegeben.
Beispiel:
C[3];
C3
X[2];
X2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0246)
129
Maple-Schulung
Mo¨chte man Informationen u
¨ber die Struktur einer Tabelle, verwendet man den Befehl op(tabellennane). M¨ochte man Informationen u
¨ber ihre Komponenten, verwendet
man den Befehl op(op(tabellenname)).
Beispiel:
op(X);
table([
sin( x ) = π
x+y =2
])
op(op(X));
[ sin( x ) = π, x + y = 2 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0247)
130
Maple-Schulung
Eine andere M¨oglichkeit, Tabellen zu bilden, ist die Zuweisung von Werten. Der Index
muß in eckigen Klammer angegeben werden.
Beispiel:
T[1]:=sin(x);
T1 := sin( x )
T[2]:=cos(x);
T2 := cos( x )
T[3]:=tan(x);
T3 := tan( x )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0247)
131
Maple-Schulung
M¨ochte man die Tabelle vollst¨andig ausgeben, wendet man den Befehl eval an.
Beispiel:
eval(T);
table([
1 = sin( x )
2 = cos( x )
3 = tan( x )
])
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0248)
132
Maple-Schulung
Der Index kann aber auch eine Zeichenkette sein.
Beispiel:
Tel[Dietsche]:=564527;
T elDietsche := 564527
Tel[Lammarsch]:=564540;
T elLammarsch := 564540
Tel[Beratung]:=564509;
T elBeratung := 564509
eval(Tel);
table([
Dietsche = 564527
Lammarsch = 564540
Beratung = 564509
])
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0249)
133
Maple-Schulung
Einzelne Elemente kann man ausgeben, indem man den Namen als Index benutzt.
Beispiel:
Tel[Dietsche];
564527
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0251)
134
Maple-Schulung
30
Felder (Arrays)
Felder sind in ihrer Struktur ¨ahnlich aufgebaut wie Tabellen. Im Gegensatz zu Tabellen
allerdings ist ihre Gr¨oße nicht ver¨anderlich und muß mit Hilfe des array-Kommandos
im voraus festgelegt werden. Ferner sind als Indizes nur ganze Zahlen erlaubt.
Der Befehl array ben¨otigt als Angabe die Bereichsgrenzen der Indizes.
Syntax:
array(von1..bis1,von2..bis2,...)
Beispiel:
ar1:=array(1..3);
ar1 := array( 1..3, [ ] )
ar2:=array(1..3,1..2);
ar2 := array( 1..3, 1..2, [ ] )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0252)
135
Maple-Schulung
Alternativ k¨onnen Felder angelegt bzw. initialisiert werden, indem man dem Befehl
array eine Liste der Elemente u
¨bergibt. Bei Bedarf kann die Liste auch geschachtelt
werden.
Syntax:
array([liste])
Beispiel:
ar3:=array([a,b,c]);
ar3 := [ a b c ]
ar4:=array([[a,b],[c,d]]);

ar4 := 
a b
c d


In diesem Fall geht Maple V davon aus, daß die untere Bereichsangabe der Indizes immer
1 ist.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0253)
136
Maple-Schulung
Felder werden je nach Inhalt unterschiedlich dargestellt. Ein- oder zweidimensionale Felder, deren Index mit 1 beginnt, werden in Matrizenform dargestellt. Mehrdimensionale
Felder und Felder, deren Index nicht mit 1 beginnt, werden in einer table-Struktur
angezeigt.
Beispiel:
ar5:=array(1..2,1..2,[[a,b],[c,d]]);

ar5 := 
a b
c d


ar6:=array(2..3,2..3,[[a,b],[c,d]]);
ar6 := array(2..3, 2..3, [
( 2, 2 ) = a
( 2, 3 ) = b
( 3, 2 ) = c
( 3, 3 ) = d
])
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0254)
137
Maple-Schulung
Der Zugriff auf die Elemente eines Feldes geschieht u
¨ber die Angabe des Index bzw. der
Indizes in eckigen Klammern.
Beispiel:
ar7:=array([[a,b],[c,d]]);

ar7 := 
a b
c d


ar7[1,1]:=a^2;
ar71,1 := a2
ar7[2,2]:=d^2;
ar72,2 := d2
eval(ar7);


a2 b
c d2


Der Inhalt von Feldern wird (wie bei Tabellen) nur ausgegeben, wenn Befehle wie eval
oder print explizit verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0261)
138
Maple-Schulung
31
Vektoren und Matrizen
Vektoren werden durch eindimensionale, Matrizen durch zweidimensionale Felder dargestellt.
Rechnen mit Vektoren
Beispiel:
V1:=array([1,2,3]);
V 1 := [ 1 2 3 ]
V2:=array([10,20,30]);
V 2 := [ 10 20 30 ]
Fu
¨r das Rechnen mit Vektoren wird fu
¨r die Addition der Operator +, fu
¨r die Subtraktion
der Operator - verwendet.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0261)
139
Maple-Schulung
Beispiel:
V1+V2;
V1+V2
Wenn mit Vektoren gerechnet wird, fu
¨hrt Maple V nicht automatisch die Auswertung
durch. Mit dem Befehl evalm werden Berechnungen mit Vektoren durchgefu
¨hrt.
Beispiel:
evalm(V1+V2);
[ 11 22 33 ]
evalm(V1-V2);
[ −9 − 18 − 27 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0263)
140
Maple-Schulung
Rechnen mit Matrizen
Beispiel:
M1:=array([[1,2],[3,4]]);

M 1 := 
1 2
3 4


M2:=array([[10,20],[30,40]]);

M 2 := 
10 20
30 40


Fu
¨r das Rechnen mit Matrizen wird fu
¨r die Addition der Operator +, fu
¨r die Subtraktion
der Operator - und fu
¨r die Multiplikation der Operator &* verwendet.
Beispiel:
M1+M2;
M1 + M2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0264)
141
Maple-Schulung
Wenn mit Matrizen gerechnet wird, fu
¨hrt Maple V nicht automatisch die Auswertung
durch. Mit dem Befehl evalm werden Berechnungen mit Matrizen durchgefu
¨hrt.
Beispiel:
evalm(M1+M2);


11 22
33 44


evalm(M1-M2);


−9 −18
−27 −36


evalm(M1&*M2);


c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0161)
70 100
150 220


142
Maple-Schulung
32
Programmierbeispiel 1
Aufgabe:
Schreiben Sie ein Programm, das die L¨ange eines Marathonlaufs bei der Angabe von
Meilen und Yards in Kilometer umrechnet.
Lo
¨sung:
Die L¨ange in Kilometer berechnet sich bei der Angabe der L¨ange in Meilen und Yards
nach folgender Formel:
kilometer = 1.609(meilen + yards/1760.0)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0161)
143
Maple-Schulung
Die Maple V-Eingabe fu
¨r dieses Programm (Prozedur) ist wie folgt:
umw:=proc()
meilen:=26;
yards:=385;
kilometer:=1.609*(meilen+yards/1760.);
print(kilometer);
end;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1161)
144
Maple-Schulung
Das Resultat auf diese Eingabe wird wie folgt am Bildschirm ausgegeben:
Warning, ‘meilen‘ is implicitly declared local
Warning, ‘yards‘ is implicitly declared local
Warning, ‘kilometer‘ is implicitly declared
local
umw := proc()
local meilen,yards,kilometer;
meilen := 26;
yards := 385;
kilometer := 1.609*meilen+
.0009142045455*yards;
print(kilometer)
end
Die Warnungen verweisen darauf, daß die Variablen meilen, yards und kilometer nicht
deklariert wurden. Diese fehlende Deklaration wurde daher von Maple V u
¨bernommen.
Danach wird das Programm wiederholt, und zwar in der Form, die Maple V intern
abgespeichert hat.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map2161)
145
Maple-Schulung
M¨ochte man das Programm aufrufen, benutzt man den ihm zugewiesenen Namen:
umw();
42.18596875
Der print-Befehl gibt das Ergebnis am Bildschirm aus. Allerdings wu
¨rde das Ergebnis
in jedem Fall angezeigt werden, da das Ergebnis des letzten Befehls in einer Prozedur
immer am Bildschirm ausgegeben wird.
Um diese Ausgabe zu verhindern, w¨are der einfachste Weg den Aufruf statt mit einem
Semikolon mit einem Doppelpunkt abzuschließen.
umw():
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0162)
146
Maple-Schulung
Mo¨chte man die Ausgabe des ganzen Programms am Bildschirm vermeiden, kann man
die Eingabe durch einen Doppelpunkt abschließen,
umw:=proc()
meilen:=26;
yards:=385;
kilometer:=1.609*(meilen+yards/1760.);
print(kilometer);
end:
und man erh¨alt folgendes Ergebnis:
Warning, ‘meilen‘ is implicitly declared local
Warning, ‘yards‘ is implicitly declared local
Warning, ‘kilometer‘ is implicitly declared
local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0162)
147
Maple-Schulung
Die Ausgabe des Programms ist unterdru
¨ckt, aber die Warnungen werden weiterhin
angezeigt.
umw();
42.18596875
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0181)
148
Maple-Schulung
33
Prozeduren
Prozeduren werden mit dem Befehl proc eingeleitet und mit end abgeschlossen. Der
Prozedur wird einem Namen zugeordnet, u
¨ber den sie sp¨ater aufgerufen wird.
Syntax:
name:=proc(arg1,arg2,...)local nvar;
global nvar;
options nopt;
befehl1, befehl2,...
end;
arg1,arg2,... ist eine Liste der Parameter, die an die Prozedur u
¨bergeben werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1181)
149
Maple-Schulung
Beispiel:
test:=proc(x,y,z)
local a,b;
a:=x+y;
b:=x+z;
print(a,b);
end;
test := proc(x,y,z) local a,b; a := x+y;
b := x+z; print(a,b) end
Ruft man die Prozedur auf,
test(1,2,3);
dann erh¨alt man folgendes Ergebnis.
3, 4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map2181)
150
Maple-Schulung
Durch den Befehl local werden die lokalen, d.h. nur in der Prozedur verfu
¨gbaren Variablen, deklariert.
Beispiel:
local a,b;
Durch den Befehl global werden die globalen Variablen deklariert. Diese sind auch nach
der Beendigung der Prozedur mit. ihrem letzten Wert verfu
¨gbar.
Beispiel:
global a,b;
Diese M¨oglichkeit sollte aber sehr zuru
¨ckhaltend verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0183)
151
Maple-Schulung
¨
Die Optionen steuern die interne Verwaltung und Anwendung der Prozedur. Eine Ubersicht u
¨ber m¨ogliche Optionen kann man durch ?options erhalten.
test:=proc(x,y)
options trace;
print(x+y);
end:
Ruft man die Prozedur auf, dann erh¨alt man beispielsweise durch die Option trace
folgendes Ergebnis:
test(1,2);
{--> enter test, args = 1, 2
3
<-- exit test (now at top level) = }
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0182)
152
Maple-Schulung
befehl1,befehl2,... sind die Befehle, welche in der Prozedur ausgefu
¨hrt werden. Die
Ergebnisse dieser Befehle werden am Bildschirm nicht angezeigt. Als Ru
¨ckgabewert der
Prozedur gilt das Ergebnis des letzten Befehls.
M¨ochte man mehr als dieses Ergebnis ausgeben, muß der Befehl print verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0182)
153
Maple-Schulung
Die Parameter k¨onnen auf ihren Datentyp u
¨berpru
¨ft werden, indem man an dem Namen
¨
des Parameters seinen Datentyp hinzufu
¨gt. Stimmt der Datentyp nicht mit der Ubergabe
u
¨berein, wird von Maple V eine Fehlermeldung ausgegeben. Eine Liste der von Maple
V unterstu
¨tzten Datentypen erh¨alt man durch ?type.
test:=proc(x:integer,y:integer,z:integer)
print(x,y^2,z^3);
end:
Der Aufruf ergibt folgendes:
test(1,2.5,3);
Error, test expects its 2nd argument, y, to
be of type integer, but received 2.5
Die Fehlermeldung sagt ganz klar aus, daß eine ganze Zahl als zweiter Parameter erwartet wurde, aber die Eingabe 2.5 war.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0184)
154
Maple-Schulung
34
Beenden einer Prozedur
Eine Prozedur endet in der Regel, wenn Maple V bei der Abarbeitung der Befehle den
Befehl end erreicht.
Eine Prozedur kann jedoch auch jederzeit mit dem Befehl RETURN an jeder beliebigen
Stelle beendet werden. Dabei ist es m¨oglich, den Inhalt von einer oder von mehreren
Variablen an das rufende Programm zuru
¨ckzugeben.
Syntax:
RETURN(var1, var2, ...)
var1, var2, ... sind die Namen der Variablen, deren Inhalt zuru
¨ckgegeben werden
soll. Der Aufruf von RETURN bewirkt, daß das Programm an der Stelle fortgesetzt wird,
von der die Prozedur aufgerufen wurde.
Es darf beliebig oft in einer Prozedur der Befehl RETURN verwendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1184)
155
Maple-Schulung
Beispiel:
test:=proc()
local a,b;
a:=2;
RETURN(a);
b:=4;
RETURN(b);
end;
test();
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1184)
156
Maple-Schulung
Bei diesem Beispiel werden die Befehle
b:=4;
RETURN(b);
nie ausgefu
¨hrt, da der Befehl
RETURN(a);
die Prozedur beendet. Soll kein Wert zuru
¨ckgegeben werden, kann die Prozedur durch
den Befehl RETURN ohne Angabe von Parametern beendet werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0186)
157
Maple-Schulung
Beispiel:
test:=proc()
local a,b,c;
a:=2;
b:=4;
c:=a+b;
RETURN();
end;
test();
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1186)
158
Maple-Schulung
Eine weitere Alternative w¨are das Einfu
¨gen eines leeren Befehls (NULL) als letzte Anweisung in der Prozedur.
Beispiel:
test:=proc()
local a,b,c;
a:=2;
b:=4;
c:=a+b;
NULL;
end;
test();
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0185)
159
Maple-Schulung
Bei der Ru
¨ckgabe von mehr als einer Variablen ist es zweckm¨aßig, die Werte in einer
Liste zu verarbeiten.
Beispiel:
test:=proc()
local a,b,c;
a:=2;
b:=4;
c:=6;
RETURN(a,b,c);
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0185)
160
Maple-Schulung
erg:=[test()];
erg := [ 2, 4, 6 ]
erg[2];
4
op(1..2,erg);
2, 4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0187)
161
Maple-Schulung
35
Speichern von Prozeduren
Prozeduren werden mit dem Befehl save fu
¨r eine sp¨atere (Wieder-)Verwendung gespeichert.
Syntax:
save prozedurname,dateiname
wobei prozedurname der Name der Prozedur ist, die gespeichert werden soll, und dateiname
der Name der Datei ist, in die gespeichert werden soll.
• dateiname ist eine Zeichenkette und muß daher in Hochkommata eingeschlossen
werden.
• Besitzt der Dateiname das Suffix m, wird zum Abspeichern das interne Maple VFormat benutzt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0188)
162
Maple-Schulung
Beispiel:
test:=proc()
a:=sqrt(16);
end:
Warning, ‘a‘ is implicitly declared local
test();
4
save test,‘test.map‘;
oder im internen Maple V-Format
save test,‘test.m‘;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0191)
163
Maple-Schulung
36
Laden von Prozeduren
Mit dem Befehl read werden abgespeicherte Prozeduren wieder geladen.
Syntax:
read dateiname
wobei dateiname der Name der Datei ist, die gelesen werden soll.
Beispiel:
read ‘test.map‘;
test := proc() local a; a := sqrt(16) end
test();
4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0191)
164
Maple-Schulung
bzw.
test:=‘test‘;
test := test
read ‘test.m‘;
test();
4
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0192)
165
Maple-Schulung
Es ist auch m¨oglich, die Prozedur außerhalb von Maple V mit einem beliebigen Editor
zu erstellen und danach mit dem Befehl read einzulesen.
Im Falle eines Fehlers bricht Maple V das Einlesen ab und gibt eine kurze Fehlermeldung
aus.
Beispiel:
Mit einem beliebigen Editor wurde folgendes Programm erstellt:
ftest:=proc(x,y)
sqrt(x y);
end:
und unter dem Namen ftest.map abgespeichert.
Beim Einlesen entdeckt Maple V folgenden Fehler:
read ‘ftest.map‘;
on line 2, syntax error:
sqrt(x y);
^
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0193)
166
Maple-Schulung
Setzt man interface(echo=2), erh¨alt man die Ausgabe aller Programmzeilen:
interface(echo=2);
read ‘ftest.map‘;
ftest:=proc(x,y)
sqrt(x y);
on line 2, syntax error:
sqrt(x y);
^
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0151)
167
Maple-Schulung
37
Ausgabe am Bildschirm
Zur Ausgabe am Bildschirm stehen in Maple V die Kommandos print, lprint und
printf zur Verfu
¨gung.
print
print gibt die Ausgabe in zwei-dimensionaler Form aus.
Syntax:
print(ausdr1, ausdr2, ... , ausdrn)
Bei der Ausgabe werden die aufeinanderfolgenden Ausdru
¨cke durch Kommata getrennt.
Beispiel:
a:=1.234567;
a := 1.234567
b:=3/7;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0152)
168
Maple-Schulung
b :=
3
7
c:=111;
c := 111
print(a,b,c);
3
1.234567, , 111
7
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0153)
169
Maple-Schulung
lprint
lprint erzeugt die Ausgabe in ein-dimensionaler Form.
Syntax:
lprint(ausdr1, ausdr2, ... , ausdrn)
Bei der Ausgabe werden die aufeinanderfolgenden Ausdru
¨cke durch Leerzeichen getrennt.
Beispiel:
a:=1.234567;
a := 1.234567
b:=3/7;
b :=
3
7
c:=111;
c := 111
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0153)
170
Maple-Schulung
lprint(a,b,c);
1.234567
c
MM
3/7
111
Joachim Lammarsch, URZ, Heidelberg
(map0154)
171
Maple-Schulung
printf
printf erzeugt eine formatierte Ausgabe nach den Vorgaben in der Kontrollzeichenkette. Der Aufbau der Kontrollzeichenkette ist der Programmiersprache C ¨ahnlich.
Syntax:
printf(kontrollzk,ausdr1, ausdr2, ... , ausdrn)
Ganze Zahlen werden in der Kontrollzeichenkette durch %d, Gleitkommazahlen durch
%f und ein Zeilenvorschub wird durch \n kodiert.
Beispiel:
a:=1.234567;
a := 1.234567
b:=3/7;
b :=
3
7
c:=111;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0154)
172
Maple-Schulung
c := 111
printf(‘%f %f %d‘,a,b,c);
1.234567 0.428571 111
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0155)
173
Maple-Schulung
38
printf
Die Funktion printf wird benutzt, um eine Ausgabe in einem speziellen Format am
Bildschirm anzuzeigen.
Syntax:
printf(kzk,x1, x2, ... ,xn)
wobei kzk die Kontrollzeichenkette ist, welche die Ausgabe spezifiziert, und x1, x2, . . . ,
xn die Ausdru
¨cke sind, die formatiert ausgegeben werden sollen.
Die Kontrollzeichenkette entha¨lt die Formatelemente, die eventuell durch andere Zeichen
getrennt werden. Jedes Formatelement hat folgenden Aufbau:
%[+][-][m][.n]code
Das %-Zeichen kennzeichnet ein Formatelement. Mittels + wird angegeben, das auch
bei positiven Zahlen ein Vorzeichen auszugeben ist. Mit - wird der Wert linksbu
¨ndig
ausgegeben.
m ist die Anzahl der Spalten, die fu
¨r die Ausgabe ben¨otigt wird, bei Gleitpunktzahlen
gibt .n die Anzahl der Nachkommastellen an.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0156)
174
Maple-Schulung
code gibt den Datentyp an, der ausgegeben werden soll:
d oder i ganze Dezimal-Zahl
u
vorzeichenlose ganze Dezimal-Zahl
o
vorzeichenlose ganze Oktal-Zahl
x oder X vorzeichenlose ganze Hexadezimal-Zahl
e oder E Gleitpunktzahl in wissenschaftlicher Notation
f
Gleitpunktzahl
s
Zeichenkette
%
Prozentzeichen
Die printf-Funktion beginnt nicht automatisch eine neue Zeile. Wenn eine neue Zeile
gewu
¨nscht wird, muß \n benutzt werden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0157)
175
Maple-Schulung
Beispiel:
x1:=12345;
x1 := 12345
x2:=-56789;
x2 := −56789
y:=123.456456456;
y := 123.456456456
printf(‘%d %d %f %e\n‘,x1,x2,y,y);
12345 -56789 123.456456 1.234565e+002
printf(‘%8d %8d %15f %15e\n‘,x1,x2,y,y);
12345
-56789
123.456456
1.234565e+002
printf(‘%-8d %-8d %-15f %-15e\n‘,x1,x2,y,y);
12345
c
MM
-56789
123.456456
Joachim Lammarsch, URZ, Heidelberg
(map0157)
1.234565e+002
176
Maple-Schulung
printf(‘%+8d %+8d %+15f %+15e\n‘,x1,x2,y,y);
+12345
-56789
+123.456456
+1.234565e+002
printf(‘%+-8d %+-8d %+-15f %+-15e\n‘,
x1,x2,y,y);
+12345
-56789
+123.456456
+1.234565e+002
printf(‘%15.4f %15.4e\n‘,y,y);
123.4565
c
MM
1.2346e+002
Joachim Lammarsch, URZ, Heidelberg
(map0194)
177
Maple-Schulung
39
Lesen von Zahlen aus Dateien
Fu
¨r die Eingabe von Zahlen, welche in Dateien abgespeichert sind, gibt es den Befehl
readdata.
Syntax:
readdata(dateiname,datentyp,spaltenanzahl)
Dieser Befehl ist standardma¨ßig nicht aktiviert. Dies muß vor dem Aufruf durch den
Befehl
readlib(readdata);
vorgenommen werden.
Fehlt die Angabe datentyp, geht Maple V davon aus, daß es sich um Gleitpunktzahlen
handelt. Bei der Eingabe von ganzen Zahlen muß als Datentyp integer angegeben
werden.
Fehlt die Angabe spaltenanzahl, geht Maple V davon aus, daß pro Zeile nur die erste
Zahl gelesen werden soll.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0195)
178
Maple-Schulung
In der Datei map0195.da1 befinden sich folgende Daten:
9.1
8.4
7.7
6.2
5.5
4.8
Zum Einlesen der Daten geht man dann wie folgt vor:
readlib(readdata);
proc(fname) ... end
readdata(‘map0195.da1‘);
[ 9.100000000000000, 8.400000000000000, 7.700000000000000 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0195)
179
Maple-Schulung
Es wird nur die erste Zahl von jeder Zeile eingelesen. M¨ochte man alle Zahlen einlesen,
muß der Aufruf wie folgt ge¨andert werden:
readdata(‘map0195.da1‘,float,3);
[[ 9.100000000000000, 6.200000000000000 ],
[ 8.400000000000000, 5.500000000000000 ],
[ 7.700000000000000, 4.800000000000000 ]]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1195)
180
Maple-Schulung
Mo¨chte man ganze Zahlen einlesen, muss als zweiter Parameter integer eingegeben
werden.
In der Datei map0195.da2 befinden sich folgende Daten:
1
4
7
2
5
8
3
6
9
Zum Einlesen der Daten geht man dann wie folgt vor:
readlib(readdata);
proc(fname) ... end
readdata(‘map0195.da2‘);
[ 1., 4., 7. ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map1195)
181
Maple-Schulung
Es wird auch hier nur die erste Zahl von jeder Zeile eingelesen. M¨ochte man alle Zahlen
einlesen, muß der Aufruf wie folgt ge¨andert werden:
readdata(‘map0195.da2‘,integer,3);
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0201)
182
Maple-Schulung
40
Eingabe einer Zeichenkette
Mit dem Befehl readline ist es m¨oglich, eine Zeichenkette aus einer Datei bzw. von der
Tastatur zu lesen.
Lesen aus einer Datei
Syntax:
readline(dateiname)
wobei dateiname der Name der Datei ist, aus der gelesen werden soll.
• Die L¨ange der Textzeile kann maximal 499 Zeichen betragen.
• Ist das Ende der Datei erreicht, gibt das Kommando den Wert 0 anstelle der Zeichenkette zuru
¨ck.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0201)
183
Maple-Schulung
Beispiel:
test:=proc()
local str;
str:=readline(‘eingabe.dat‘);
lprint(‘Text:‘,str);
end:
test();
Text:
c
MM
Das ist die 1. Testzeile.
Joachim Lammarsch, URZ, Heidelberg
(map0202)
184
Maple-Schulung
Mo¨chte man eine ganze Datei lesen, dann muß man den Befehl readline mehrfach
aufrufen.
Beispiel:
test:=proc()
local str;
str:=readline(‘map0202.dat‘);
lprint(‘Text:‘,str);
str:=readline(‘map0202.dat‘);
lprint(‘Text:‘,str);
str:=readline(‘map0202.dat‘);
lprint(‘Text:‘,str);
end:
test();
Text:
Text:
Text:
c
MM
Das ist meine 1. Textzeile.
Das ist meine 2. Textzeile.
Das ist meine 3. Textzeile.
Joachim Lammarsch, URZ, Heidelberg
(map0203)
185
Maple-Schulung
Lesen von der Tastatur
Mo¨chte man die Textzeile nicht aus einer Datei lesen, sondern u
¨ber die Tastatur eingeben, muß man als Parameter terminal eingeben.
Syntax:
readline(terminal)
Beispiel:
test:=proc()
local inp;
lprint(‘Bitte geben Sie einen Text ein‘);
inp:=readline(terminal);
lprint(‘Text:‘,inp);
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0203)
186
Maple-Schulung
test();
Bitte geben Sie einen Text ein
Das ist ein Text als Eingabe.
Text:
Das ist ein Text als Eingabe.
test();
Bitte geben Sie einen Text ein
12 34 56 78
Text:
c
MM
12 34 56 78
Joachim Lammarsch, URZ, Heidelberg
(map0204)
187
Maple-Schulung
41
Extrahieren von Zahlen und Zeichenketten aus einer Zeichenkette
Mit dem Kommando sscanf kann man aus einer Zeichenkette Zahlen oder Zeichenketten
lesen.
Syntax:
sscanf(zeichenkette,kontrollzeichenkette)
wobei
zeichenkette die Zeichenkette ist, die gelesen werden soll und
kontrollzeichenkette die Zeichenkette ist, welche die Formatanweisungen enth¨alt.
sscanf gibt die gelesenen Daten in Form einer Liste zuru
¨ck. Eine Formatanweisung hat
die Form
%[*][breite]code
wobei
das Zeichen % eine Formatanweisung einleitet,
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0204)
188
Maple-Schulung
das Zeichen * angibt, daß ein Datenobjekt eingelesen wird, das Ergebnis aber nicht als
Teil des Ergebnisses zuru
¨ckgegeben wird,
der Parameter breite angibt, wieviele Zeichen fu
¨r ein Datenobjekt bearbeitet werden
sollen,
der Parameter code angibt, welchen Datentyp das gelesene Datenobjekt hat:
d
u
o
x
e
s
oder D fu
¨r eine ganze Zahl
oder U fu
¨r eine vorzeichenlose ganze Zahl
oder O fu
¨r eine Oktal-Zahl
oder X fu
¨r eine Hexadezimal-Zahl
oder f fu
¨r eine Gleitpunkt-Zahl
fu
¨r eine Zeichenkette
Wenn normale Zeichen in der Kontrollzeichenkette vorkommen, mu
¨ssen sie in der Eingabe ebenfalls vorkommen.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0206)
189
Maple-Schulung
Beispiel:
test:=proc()
local str;
str:=‘1234‘;
sscanf(str,‘%d‘);
end:
test();
[ 1234 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0206)
190
Maple-Schulung
test:=proc()
local str;
str:=‘1.234‘;
sscanf(str,‘%f‘);
end:
test();
[ 1.234000000000000 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0211)
191
Maple-Schulung
42
Vergleichsoperatoren
Maple V kennt folgende Vergleichsoperatoren:
kleiner als
gr¨oßer als
kleiner als oder gleich
gr¨oßer als oder gleich
<
>
<=
>=
Beispiel:
1<3;
1<3
x>y;
y<x
x+4<10;
x + 4 < 10
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0211)
192
Maple-Schulung
a>=5;
5≤a
Bei diesen Vergleichsoperatoren wird die Differenz zwischen den Operanden bestimmt.
Das Ergebnis muß eine numerische Konstante ergeben. Diese Konstante wird dann mit
Null verglichen.
Bei den Vergeichsoperatoren
gleich
ungleich
=
<>
u
¨berpru
¨ft Maple V nur die syntaktische und nicht gleichzeitig die algebraische Gleichheit, d. h. fu
¨r Maple V sind zwei Operanden nur gleich, wenn sie in der internen Darstellung u
¨bereinstimmen.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0212)
193
Maple-Schulung
Beispiel:
a=b;
a=b
x<>y;
x=y
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0213)
194
Maple-Schulung
43
Logische Ausdru
¨ cke
Maple V benutzt eine dreiwertige Logik und kennt folgende logische Ausdru
¨cke: true,
false, FAIL.
true
false
FAIL
steht fu
¨r wahr
steht fu
¨r falsch
steht fu
¨r ich weiß es nicht“ und wird benutzt, wenn weder eindeutig
”
true noch false zugeordnet werden kann.
true, false und FAIL z¨ahlen innerhalb von Maple V zu den Konstanten.
Maple V pru
¨ft nur automatisch eine Gleichung auf den Wahrheitswert bei Verwendung
in Befehlen wie for, while, . . .
M¨ochte man den Wahrheitswert einer Gleichung erhalten, kann man den Befehl evalb
verwenden.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0214)
195
Maple-Schulung
Beispiel:
evalb(a=b);
f alse
evalb(a<>b);
true
evalb(a+b=b+a);
true
evalb(a^2-b^2=(a-b)*(a+b));
f alse
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0215)
196
Maple-Schulung
Obwohl in diesem Fall die linke Seite und die rechte Seite der Gleichung mathematisch
gleich sind, ist das Ergebnis des Vergleichs falsch, da die interne Darstellung der linken
Seite ungleich der internen Darstellung der rechten Seite ist.
Abhilfe schafft in diesem Fall, die Gleichung zu expandieren.
Beispiel:
expand(a^2-b^2=(a-b)*(a+b));
a2 − b 2 = a2 − b 2
So erh¨alt man das erwartete Ergebnis:
evalb(expand(a^2-b^2=(a-b)*(a+b)));
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0216)
197
Maple-Schulung
44
Logische Operatoren
Fu
¨r das Rechnen mit logischen Ausdru
¨cken gibt es in Maple V folgende Operatoren:
and, or und not.
Die Auswertung geschieht nach folgenden Wahrheitstafeln:
and
AND
true
false
FAIL
true
true
false
FAIL
false
false
false
false
FAIL
FAIL
false
FAIL
Eine Verwendung der Umgangssprache w¨are
Wenn der Himmel azurblau ist und wenn die Sonne scheint, dann ist sch¨
ones
Wetter.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0216)
198
Maple-Schulung
Beispiel:
evalb(2<3 and 3<4);
true
alter:=35;
evalb(alter>18 and alter<40);
alter := 35
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0217)
199
Maple-Schulung
or
OR
true
false
FAIL
true
true
true
true
false
true
false
FAIL
FAIL
true
FAIL
FAIL
Eine Verwendung in der Umgangssprache w¨are
Wenn man Wein trinkt oder wenn man Bier trinkt, dann sollte man kein Auto
fahren.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0217)
200
Maple-Schulung
Beispiel:
evalb(2<5 or 4>6);
true
zahl:=10;
evalb(zahl=10 or zahl=20);
zahl := 10
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0218)
201
Maple-Schulung
not
NOT true false FAIL
false true FAIL
Eine Verwendung in der Umgangssprache wa¨re
Wenn man nicht im Haus ist, dann ist man im Freien.
Beispiel:
evalb(not 4<5);
f alse
eingabe:=7;
evalb(not eingabe<5);
eingabe := 7
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0219)
202
Maple-Schulung
Man kann auch die logischen Operatoren kombinieren:
Beispiel:
alter:=20;
gesch:=0;
evalb((alter>18 and gesch=0) or
(alter>21 and gesch=1));
alter := 20
gesch := 0
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0210)
203
Maple-Schulung
oder
Beispiel:
zahl:=10:
wert:=100:
evalb(zahl<>0 or zahl>wert or wert-zahl=90);
true
n1:=1:
n2:=17:
evalb((n1>0 and n2>0) or (n1>n2 and n2<>17));
true
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0221)
204
Maple-Schulung
45
Entscheidungen
Entscheidungen oder bedingte Anweisungen haben die Aufgabe, den Programmablauf
zu kontrollieren.
Der if-Befehl
Bei diesem Befehl werden eine oder mehrere Anweisungen ausgefu
¨hrt, wenn eine Bedingung wahr ist.
Syntax:
if bedingung then anweisung(en) fi
Ist die Bedingung falsch, wird die Anweisung nicht ausgefu
¨hrt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0222)
205
Maple-Schulung
Beispiel:
test:=proc()
local str,list;
lprint(‘Geben Sie zwei ganze Zahlen ein:‘);
str:=readline(terminal);
list:=sscanf(str,‘%d %d‘);
if list[1]=list[2]
then lprint(‘Beide Zahlen sind gleich.‘);
fi;
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0222)
206
Maple-Schulung
test();
Geben Sie zwei ganze Zahlen ein:
10 10
Beide Zahlen sind gleich.
test();
Geben Sie zwei ganze Zahlen ein:
10 20
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0223)
207
Maple-Schulung
Der if ... else-Befehl
Mit diesem Befehl wird in Abh¨angigkeit von einer Bedingung entweder die eine oder
die andere Anweisung ausgefu
¨hrt. Eine Anweisung kann auch aus mehreren, zu einer
zusammengefaßten Anweisung bestehen.
Syntax:
if bedingung then anweisung_1
else anweisung_2 fi
Ist bedingung wahr, wird anweisung_1 ausgefu
¨hrt, ist bedingung falsch, wird anweisung_2
ausgefu
¨hrt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0223)
208
Maple-Schulung
Beispiel:
test:=proc()
local str,list;
lprint(‘Geben Sie zwei ganze Zahlen ein:‘);
str:=readline(terminal);
list:=sscanf(str,‘%d %d‘);
if list[1]=list[2]
then lprint(‘Beide Zahlen sind gleich.‘);
else lprint(‘Beide Zahlen sind ungleich.‘);
fi;
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0223)
209
Maple-Schulung
test();
Geben Sie zwei ganze Zahlen ein:
10 10
Beide Zahlen sind gleich.
test();
Geben Sie zwei ganze Zahlen ein:
10 20
Beide Zahlen sind ungleich.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0224)
210
Maple-Schulung
Beispiel:
test:=proc()
local str,list;
lprint(‘Geben Sie eine Zahl ein:‘);
str:=readline(terminal);
list:=sscanf(str,‘%d‘);
if list[1]<0
then lprint(‘Die Zahl ist negativ.‘);
else lprint(‘Die Zahl ist positiv.‘);
fi;
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0224)
211
Maple-Schulung
test();
Geben Sie eine Zahl ein:
10
Die Zahl ist positiv.
test();
Geben Sie eine Zahl ein:
-10
Die Zahl ist negativ.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0225)
212
Maple-Schulung
Der if ... elif ... else-Befehl
Mit diesem Befehl wird in Abh¨angigkeit von Bedingungen eine bzw. mehrere Anweisungen ausgefu
¨hrt.
Syntax:
if
elif
elif
...
elif
bedingung_1 then anweisung_1
bedingung_2 then anweisung_2
bedingung_3 then anweisung_3
bedingung_n then anweisung_n
else anweisung_x fi
Ist bedingung_1 wahr, wird anweisung_1 ausgefu
¨hrt, ist bedingung_2 wahr, wird
anweisung_2 ausgefu
¨hrt, u. s. w.
Trifft keine der Bedingungen zu, wird anweisung_x ausgefu
¨hrt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0225)
213
Maple-Schulung
Beispiel:
test:=proc()
local str,list;
lprint(‘Geben Sie eine Zahl ein:‘);
str:=readline(terminal);
list:=sscanf(str,‘%d‘);
if list[1]<0
then lprint(‘Die Zahl ist negativ.‘);
elif list[1]>0
then lprint(‘Die Zahl ist positiv.‘);
else lprint(‘Die Zahl ist null.‘);
fi
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0225)
214
Maple-Schulung
test();
Geben Sie eine Zahl ein:
2
Die Zahl ist positiv.
test();
Geben Sie eine Zahl ein:
-2
Die Zahl ist negativ.
test();
Geben Sie eine Zahl ein:
0
Die Zahl ist null.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0226)
215
Maple-Schulung
Beispiel:
test:=proc()
local str,list;
lprint(‘Geben Sie eine Zahl von
1 bis 3 ein‘);
str:=readline(terminal);
list:=sscanf(str,‘%d‘);
if
list[1]=1
then lprint(‘Die Zahl ist Eins.‘);
elif list[1]=2
then lprint(‘Die Zahl ist Zwei.‘);
elif list[1]=3
then lprint(‘Die Zahl ist Drei.‘);
else
lprint(‘Die Zahl ist nicht 1, 2, 3.‘);
fi;
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0227)
216
Maple-Schulung
test();
Geben Sie eine Zahl von 1 bis 3 ein:
1
Die Zahl ist Eins.
test();
Geben Sie eine Zahl von 1 bis 3 ein:
2
Die Zahl ist Zwei.
test();
Geben Sie eine Zahl von 1 bis 3 ein:
3
Die Zahl ist Drei.
test();
Geben Sie eine Zahl von 1 bis 3 ein:
4
Die Zahl ist nicht 1, 2, 3.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0171)
217
Maple-Schulung
46
while
Die while-Anweisung wird verwendet, um Anweisungen in Abh¨angigkeit von einem
Ausdruck wiederholt ausfu
¨hren zu lassen.
Syntax:
while(ausdruck) do anw1, anw2, ..., anwn od;
Ist der Ausdruck
wahr werden die Anweisungen solange ausgefu
¨hrt, bis der Ausdruck falsch ist.
falsch werden die Anweisungen nicht bzw. nicht mehr ausgefu
¨hrt.
Hinweis:
Der Ausdruck wird jedesmal vor der Ausfu
¨hrung der Anweisung neu bestimmt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0163)
218
Maple-Schulung
Programmierbeispiel 1
Aufgabe:
Berechnen Sie die Summe der Zahlen von 1 bis 5, d. h.
summe = 1 + 2 + 3 + 4 + 5
L¨
osung:
wsum:=proc()
i:=0;
summe:=0;
while (i<5) do
i:=i+1;
summe:=summe+i;
lprint(‘i:‘,i,‘summe:‘,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘summe‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01631)
219
Maple-Schulung
wsum();
i:
1
i:
2
i:
3
i:
4
i:
5
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
15
1
3
6
10
15
Joachim Lammarsch, URZ, Heidelberg
(map0164)
220
Maple-Schulung
Programmierbeispiel 2
Aufgabe:
Berechnen Sie die Summe der geraden Zahlen von 2 bis 10, d. h.
summe = 2 + 4 + 6 + 8 + 10
L¨
osung:
w2sum:=proc()
i:=0;
summe:=0;
while (i<10) do
i:=i+2;
summe:=summe+i;
lprint(‘i:‘,i,‘summe:‘,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘summe‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01641)
221
Maple-Schulung
w2sum();
i:
2
i:
4
i:
6
i:
8
i:
10
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
30
2
6
12
20
30
Joachim Lammarsch, URZ, Heidelberg
(map0165)
222
Maple-Schulung
Programmierbeispiel 3
Aufgabe:
Berechnen Sie die Summe der geraden Zahlen von 10 bis 20, d. h.
summe = 10 + 12 + 14 + 16 + 18 + 20
L¨
osung:
w3sum:=proc()
i:=8;
summe:=0;
while(i<20) do
i:=i+2;
summe:=summe+i;
printf(‘i: %3d
summe: %3d\n‘,i,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘summe‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01651)
223
Maple-Schulung
w3sum();
i: 10
i: 12
i: 14
i: 16
i: 18
i: 20
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
summe:
90
10
22
36
52
70
90
Joachim Lammarsch, URZ, Heidelberg
(map0172)
224
Maple-Schulung
Programmierbeispiel 4
Aufgabe:
Berechnen Sie die Summe aller durch 13 teilbaren Zahlen von 1 bis 1000.
L¨
osung:
s = 13 + 26 + · · · + 988
wsum:=proc()
i:=13;
s:=0;
while(i<=1000)do
s:=s+i;
i:=i+13;
od;
lprint(‘Summe:‘,s);
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘s‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0172)
225
Maple-Schulung
wsum();
Summe:
c
MM
38038
Joachim Lammarsch, URZ, Heidelberg
(map0173)
226
Maple-Schulung
Programmierbeispiel 5
Aufgabe:
Berechnen Sie das Produkt aller geraden Zahlen vom 1 bis 50.
L¨
osung:
p = 2 · 4 · · · · · 50
wprot:=proc()
i:=2;
p:=1;
while (i<=50) do
p:=p*i;
i:=i+2;
od;
lprint(‘Produkt‘,p);
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘p‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0173)
227
Maple-Schulung
wprot();
Produkt
c
MM
520469842636666622693081088000000
Joachim Lammarsch, URZ, Heidelberg
(map0174)
228
Maple-Schulung
47
for
Die for-Anweisung wird verwendet, um Anweisungen beginnend mit einem Startwert
und endend bei einem Endewert mit einer bestimmten Schrittweite und, bei Bedarf, in
Abh¨angigkeit von einem Ausdruck wiederholt ausfu
¨hren zu lassen.
Syntax:
for Name from Startwert by Schrittweite
to Endewert [while Ausdruck]
do Anw1, Anw2, ..., Anwn od;
Einzelne Komponenten k¨onnen, falls sie nicht ben¨otigt werden, weggelassen werden.
Wenn from bzw. by fehlen, wird 1 angenommen.
Ist der Ausdruck
wahr werden die Anweisungen solange ausgefu
¨hrt, bis der Ausdruck falsch ist.
falsch werden die Anweisungen nicht bzw. nicht mehr ausgefu
¨hrt.
Hinweis:
Der Ausdruck wird jedesmal vor der Ausfu
¨hrung der Anweisung neu bestimmt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0166)
229
Maple-Schulung
Programmierbeispiel 1
Aufgabe:
Berechnen Sie die Summe der Zahlen von 1 bis 5, d. h.
summe = 1 + 2 + 3 + 4 + 5
L¨
osung:
fsum:=proc()
summe:=0;
for i from 1 by 1 to 5 do
summe:=summe+i;
lprint(‘i:‘,i,‘summe:‘,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘summe‘ is implicitly declared local
Warning, ‘i‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01661)
230
Maple-Schulung
fsum();
i:
1
i:
2
i:
3
i:
4
i:
5
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
15
1
3
6
10
15
Joachim Lammarsch, URZ, Heidelberg
(map0167)
231
Maple-Schulung
Programmierbeispiel 2
Aufgabe:
Berechnen Sie die Summe der geraden Zahlen von 2 bis 10, d. h.
summe = 2 + 4 + 6 + 8 + 10
L¨
osung:
f2sum:=proc()
summe:=0;
for i from 2 by 2 to 10 do
summe:=summe+i;
lprint(‘i:‘,i,‘summe:‘,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘summe‘ is implicitly declared local
Warning, ‘i‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01671)
232
Maple-Schulung
f2sum();
i:
2
i:
4
i:
6
i:
8
i:
10
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
30
2
6
12
20
30
Joachim Lammarsch, URZ, Heidelberg
(map0168)
233
Maple-Schulung
Programmierbeispiel 3
Aufgabe:
Berechnen Sie die Summe der geraden Zahlen von 10 bis 20, d. h.
summe = 10 + 12 + 14 + 16 + 18 + 20
L¨
osung:
f3sum:=proc()
summe:=0;
for i from 10 by 2 to 20 do
summe:=summe+i;
printf(‘i: %3d
summe: %3d\n‘,i,summe)
od;
lprint(‘summe:‘,summe)
end:
Warning, ‘summe‘ is implicitly declared local
Warning, ‘i‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map01681)
234
Maple-Schulung
f3sum();
i: 10
i: 12
i: 14
i: 16
i: 18
i: 20
summe:
c
MM
summe:
summe:
summe:
summe:
summe:
summe:
90
10
22
36
52
70
90
Joachim Lammarsch, URZ, Heidelberg
(map0175)
235
Maple-Schulung
Programmierbeispiel 4
Aufgabe:
Berechnen Sie die Summe aller durch 13 teilbaren Zahlen von 1 bis 1000.
L¨
osung:
s = 13 + 26 + · · · + 988
wsum:=proc()
s:=0;
for i from 13 by 13 to 1000 do
s:=s+i;
od;
lprint(‘Summe:‘,s);
end:
Warning, ‘s‘ is implicitly declared local
Warning, ‘i‘ is implicitly declared local
wsum();
Summe:
c
MM
38038
Joachim Lammarsch, URZ, Heidelberg
(map0176)
236
Maple-Schulung
Programmierbeispiel 5
Aufgabe:
Berchnen Sie das Produkt aller geraden Zahlen vom 1 bis 50.
Lo
¨sung:
p = 2 · 4 · · · · · 50
wprot:=proc()
p:=1;
for i from 2 by 2 to 50 do
p:=p*i;
od;
lprint(‘Produkt‘,p);
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘p‘ is implicitly declared local
wprot();
Produkt
c
MM
520469842636666622693081088000000
Joachim Lammarsch, URZ, Heidelberg
(map0177)
237
Maple-Schulung
48
Geschachtelte Schleifen
while
weme:=proc()
i:=1;
while i<=4 do
j:=1;
while j <=4 do
printf(‘%d * %d = %2d\n‘,i,j,i*j);
j:=j+1;
od;
i:=i+1;
od;
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘j‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0177)
238
Maple-Schulung
weme():
1
1
1
1
4
4
4
4
c
* 1 = 1
* 2 = 2
* 3 = 3
* 4 = 4
...
* 1 = 4
* 2 = 8
* 3 = 12
* 4 = 16
MM
Joachim Lammarsch, URZ, Heidelberg
(map0178)
239
Maple-Schulung
for
feme:=proc()
for i from 1 to 4 do
for j from 1 to 4 do
printf(‘%d * %d = %2d\n‘,i,j,i*j);
od;
od;
end:
Warning, ‘i‘ is implicitly declared local
Warning, ‘j‘ is implicitly declared local
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0178)
240
Maple-Schulung
feme();
1
1
1
1
4
4
4
4
c
* 1 = 1
* 2 = 2
* 3 = 3
* 4 = 4
...
* 1 = 4
* 2 = 8
* 3 = 12
* 4 = 16
MM
Joachim Lammarsch, URZ, Heidelberg
(map0255)
241
Maple-Schulung
49
Sieb des Eratosthenes:
Durch das Sieb des Eratosthenes kann man schnell Primzahlen, in diesem Fall die Primzahlen von 1 bis 100, errechnen:
Beispiel:
1
11
21
31
41
51
61
71
81
91
c
2
12
22
32
42
52
62
72
82
92
MM
3
13
23
33
43
53
63
73
83
93
4
14
24
34
44
54
64
74
84
94
5
15
25
35
45
55
65
75
85
95
6
16
26
36
46
56
66
76
86
96
Joachim Lammarsch, URZ, Heidelberg
7
17
27
37
47
57
67
77
87
97
(map0256)
8
18
28
38
48
58
68
78
88
98
9
19
29
39
49
59
69
79
89
99
10
20
30
40
50
60
70
80
90
100
242
Maple-Schulung
L¨
osung:
# Sieb des Eratosthenes
sieb:=proc()
local i,j,feld;
# Anlegen und Initialisieren des Feldes
feld:=array(1..100);
for i from 1 to 100 do
feld[i]:=i;
od;
# Streichen der Vielfachen
for i from 2 to 10 do
if feld[i]<>0 then
for j from 2*i to 100 by i do
feld[j]:=0;
od;
fi;
od;
# Ausgabe der Primzahlen
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0256)
243
Maple-Schulung
for i from 2 to 100 do
if feld[i]<>0 then
lprint(i);
fi;
od;
end:
sieb();
2
3
5
7
11
13
17
19
23
29
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0257)
244
Maple-Schulung
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0228)
245
Maple-Schulung
50
¨
Ubergehen
von Befehlen in Schleifen
In Maple V wird der Befehl next benutzt, um in for- bzw. while-Schleifen die verbleibenden Befehle bis zum Schleifenende (od-Befehl) zu u
¨berspringen, und die Schleife
dort fortzusetzen.
Syntax:
next
Beispiel:
test:=proc()
local i;
for i from 1 to 10 do
if ((i>2) and (i<9)) then next fi;
lprint(i);
od;
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0228)
246
Maple-Schulung
test();
1
2
9
10
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0229)
247
Maple-Schulung
51
Abbrechen von Schleifen
for- oder while-Schleifen k¨onnen mit dem Befehl break vorzeitig abgebrochen werden.
Daher stellt dieser Befehl eine M¨oglichkeit dar, eine Schleife an jeder Stelle zu verlassen.
Syntax:
break
Beispiel:
test:=proc()
local i,s;
i:=0;
s:=0;
while i<1000 do
i:=i+1;
s:=s+i;
if (i>=100) then break fi;
od;
lprint(‘Summe:‘,s);
end:
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0229)
248
Maple-Schulung
test();
Summe:
c
MM
5050
Joachim Lammarsch, URZ, Heidelberg
(map0271)
249
Maple-Schulung
52
Erweiterungen in Maple V
Maple V hat eine Anzahl von Erweiterungen (packages), welche erst geladen werden
mu
¨ssen, bevor sie benutzt werden k¨onnen.
Zum Laden von Erweiterungen dient der Befehl with.
Syntax:
with(package)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0271)
250
Maple-Schulung
Es stehen zur Zeit folgende Pakete zur Verfu
¨gung:
Name
DEtools
Domains
GF
GaussInt
LREtools
combinat
combstruct
difforms
finance
genfunc
geometry
grobner
group
inttrans
liesymm
c
MM
Beschreibung
differential equations tools
create domains of computation
Galois Fields
Gaussian Integers
manipulate linear recurrence relations
combinatorial functions
combinatorial structures
differential forms
financial mathematics
rational generating functions
Euclidean geometry
Grobner bases
permutation and finitely-presented groups
integral transforms
Lie symmetries
Joachim Lammarsch, URZ, Heidelberg
(map0272)
251
Maple-Schulung
Name
linalg
logic
networks
numapprox
numtheory
orthopoly
padic
plots
plottools
powseries
process
simplex
stats
student
sumtools
tensor
totorder
c
MM
Beschreibung
Linear algebra
Boolean logic
graph networks
numerical approximation
number theory
orthogonal polynomials
p-adic numbers
graphics package
basic graphical objects
formal power series
(Unix)-multi-processing
linear optimization
statistics
student calculus
indefinite and definite sums
tensor computations and General Relativity
total orders on names
Joachim Lammarsch, URZ, Heidelberg
(map0272)
252
Maple-Schulung
53
Rechnen mit Matrizen
Die Erweiterung fu
¨r lineare Algebra hat den Namen linalg.
Beispiel:
with(linalg);
Warning, new definition for norm
Warning, new definition for trace
[BlockDiagonal , GramSchmidt,
JordanBlock , LUdecomp, QRdecomp,
Wronskian, addcol , addrow , adj , adjoint,
angle, augment, backsub, band , basis,
bezout, blockmatrix , charmat, charpoly,
cholesky, col , coldim, colspace, colspan,
companion, concat, cond , copyinto,
crossprod , curl , definite, delcols, delrows,
det, diag, diverge, dotprod , eigenvals,
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0272)
253
Maple-Schulung
eigenvalues, eigenvectors, eigenvects,
entermatrix , equal , exponential , extend ,
ffgausselim, fibonacci , forwardsub,
frobenius, gausselim, gaussjord , geneqns,
genmatrix , grad , hadamard , hermite,
hessian, hilbert, htranspose, ihermite,
indexfunc, innerprod , intbasis, inverse,
ismith, issimilar , iszero, jacobian, jordan,
kernel , laplacian, leastsqrs, linsolve, matadd ,
matrix , minor , minpoly, mulcol , mulrow ,
multiply, norm, normalize, nullspace, orthog,
permanent, pivot, potential , randmatrix ,
randvector , rank , ratform, row , rowdim,
rowspace, rowspan, rref , scalarmul ,
singularvals, smith, stack , submatrix ,
subvector , sumbasis, swapcol , swaprow ,
sylvester , toeplitz , trace, transpose,
vandermonde, vecpotent, vectdim, vector ,
wronskian]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0272)
254
Maple-Schulung
matrix
Zur Eingabe der Matrix dient das Kommando matrix.
Syntax:
matrix(m,n,liste)
Mit ihm wird ein zweidimensionales Feld (Matrix) mit m Zeilen,n Spalten und den Elementen aus liste erzeugt.
Beispiel:
m:=matrix(3,4,[1,2,3,4,5,6,7,8,9,10,11,12]);


m := 
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0267)
1 2 3 4
5 6 7 8
9 10 11 12





255
Maple-Schulung
submatrix
Einzelne Teile einer Matrix (Untermatrizen) kann man mit dem Befehl submatrix erhalten.
Syntax:
submatrix(matrix,i1,i2,j1,j2)
Mit ihm wird aus der Matrix matrix eine Untermatrix con der Zeile i1 bis zur Zeile i2
und von der Spalte j1 bis zur Spalte j2 extrahiert.
Beispiel:
submatrix(m,2..3,2..3);


c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0275)
6 7
10 11


256
Maple-Schulung
row
Eine einzelne Zeile einer Matrix erh¨alt man mit dem Befehl row.
Syntax:
row(matrix,i)
Es wird die i-te Zeile aus der Matrix matrix extrahiert.
Beispiel:
row(m,2);
[5678]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0275)
257
Maple-Schulung
col
Eine einzelne Spalte einer Matrix erh¨alt man mit dem Befehl col.
Syntax:
col(matrix,i)
Es wird die i-te Spalte aus der Matrix matrix extrahiert.
Beispiel:
col(m,3);
[ 3 7 11 ]
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0276)
258
Maple-Schulung
augment
Mit dem Befehl augment ist es m¨oglich, aus zwei Matrizen eine neue Matrix zu bilden.
Syntax:
augment(matrix1,matrix2)
Die neue Matrix wird aus der Matrix matrix1 und der Matrix matrix2 gebildet. matrix1
und matrix2 mu
¨ssen die gleiche Anzahl von Zeilen haben.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0277)
259
Maple-Schulung
Beispiel:
mat1:=matrix(3,3,[1,2,3,4,5,6,7,8,9]);


mat1 := 
1 2 3
4 5 6
7 8 9





mat2:=matrix(3,1,[10,20,30]);
10
20
30

1 2 3 10
4 5 6 20
7 8 9 30



mat2 := 




augment(mat1,mat2);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0281)




260
Maple-Schulung
54
Zeilen- und Spaltenoperationen
Mit dem Befehl mulrow kann eine Zeile einer Matrix mit einem Skalar multipliziert
werden.
Syntax:
mulrow(matrix,i,ausdruck)
Es wird die i-te Zeile der Matrix matrix mit dem Ausdruck ausdruck multipliziert.
Beispiel:
mulrow(m,2,10);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1 2 3 4
50 60 70 80
9 10 11 12
(map0282)





261
Maple-Schulung
mulcol
Mit dem Befehl mulcol kann eine Spalte einer Matrix mit einem Skalar multipliziert
werden.
Syntax:
mulcol(matrix,j,ausdruck)
Es wird die j-te Spalte der Matrix matrix mit dem Ausdruck ausdruck multipliziert.
Beispiel:
mulcol(m,2,10);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1 20 3 4
5 60 7 8
9 100 11 12
(map0283)





262
Maple-Schulung
addrow
Mit dem Befehl addrow wird das Vielfache einer Zeile zu einer anderen Zeile addiert.
Syntax:
addrow(matrix,i1,i2,ausdruck)
Die i1-te Zeile der Matrix matrix multipliziert mit ausdruck wird zur i2-ten Zeile
addiert.
Beispiel:
addrow(m,2,3,100);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1
2
3
4
5
6
7
8
509 610 711 812
(map0284)





263
Maple-Schulung
addcol
Mit dem Befehl addcol wird das Vielfache einer Spalte zu einer anderen Spalte addiert.
Syntax:
addcol(matrix,i1,i2,ausdruck)
Die i1-te Spalte der Matrix matrix multipliziert mit ausdruck wird zur i2-ten Spalte
addiert.
Beispiel:
addcol(m,2,3,100);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1 2 203 4
5 6 607 8
9 10 1011 12
(map0285)





264
Maple-Schulung
swaprow
Zwei Zeilen kann man mit dem Befehl swaprow vertauschen.
Syntax:
swaprow(matrix,i1,i2)
Bei der Matrix matrix werden die Zeilen i1 und i2 vertauscht.
Beispiel:
swaprow(m,2,3);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1 2 3 4
9 10 11 12
5 6 7 8
(map0286)





265
Maple-Schulung
swapcol
Zwei Spalten kann man mit dem Befehl swapcol vertauschen.
Syntax:
swapcol(matrix,j1,j2)
Bei der Matrix matrix werden die Spalten j1 und j2 vertauscht.
Beispiel:
swapcol(m,2,3);





c
MM
Joachim Lammarsch, URZ, Heidelberg
1 3 2 4
5 7 6 8
9 11 10 12
(map0291)





266
Maple-Schulung
Beispiel:
L¨osen Sie das folgende Gleichungssystem mittels Zeilenreduktion:
with(linalg):
a:=matrix(
[[ 2,
1,
4 ],
[ 3,
3/2, 34/5],
[ 0,
2/3,
5]]
);

a :=
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0291)






2 1 4
3 23 34
5
0
2
3
5







267
Maple-Schulung
b:=matrix(
[[41/
4],
[41/12],
[35/
4]]
);

41
 4 




 41 


 12 




35
4

b :=
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0292)
268
Maple-Schulung
ab:=augment(a,b);









2 1 4

41
4 


41 

12 


35
4
3
3
2
34
5
0
2
3
5
1
1
2
2
3
3
2
34
5
0
2
3
5

41
8 


41 

12 


35
4
ab :=
mulrow(ab,1,1/2);









c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0292)
269
Maple-Schulung
addrow(",1,2,-3);

1
2
2
0 0
4
5
1
41
8

41
8









0
2
3
5

1
1
2
2
2
3
5
35
4
0 0
4
5
−287
24



−287 

24 


35
4
swaprow(",2,3);








c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0293)
0








270
Maple-Schulung
mulrow(",2,3/2);









1
2
2
0 1
15
2
105
8
0 0
4
5
−287
24
1
41
8









r:=mulrow(",3,5/4);

r :=
c
MM
Joachim Lammarsch, URZ, Heidelberg








(map0294)
1
2
2
0 1
15
2
1
0 0 1
41
8
105
8
−1435
96









271
Maple-Schulung
x[3]:=r[3,4];
x3 :=
−1435
96
x[2]:=r[2,4]-r[2,3]*x[3];
x2 :=
8015
64
x[1]:=r[1,4]-r[1,3]*x[3]-r[1,2]*x[2];
x1 :=
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0295)
−10597
384
272
Maple-Schulung
¨
Zum Uberpr
u
¨fen des Ergebnisses kann man die L¨osung in die Gleichung einsetzen.
ab[1,1]*x[1]+ab[1,2]*x[2]+ab[1,3]*x[3]-b[1,1];
0
ab[2,1]*x[1]+ab[2,2]*x[2]+ab[2,3]*x[3]-b[2,1];
0
ab[3,1]*x[1]+ab[3,2]*x[2]+ab[3,3]*x[3]-b[3,1];
0
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0311)
273
Maple-Schulung
55
Rechnen mit Matrizen mit linalg
Beispiel:
with(linalg):
Warning: new definition for
Warning: new definition for
norm
trace
A:=matrix(3,3,max);


A := 
1 2 3
2 2 3
3 3 3





Mit der Funktion max ist jedes Element ai,j das Maximum von i und j.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0312)
274
Maple-Schulung
Beispiel:
B:=matrix(3,3,min);


B := 
1 1 1
1 2 2
1 2 3





Mit der Funktion min ist jedes Element bi,j das Minimum von i und j.
Beispiel:
C:=matrix(3,3,[1,2,3,4,5,6,7,8,9]);


C := 
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0313)
1 2 3
4 5 6
7 8 9





275
Maple-Schulung
Addition
Matrizen werden mit dem Befehl + addiert.
Beispiel:
evalm(A+B);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0313)
2 3 4
3 4 5
4 5 6





276
Maple-Schulung
Subtraktion
Matrizen werden mit dem Befehl - subtrahiert.
Beispiel:
evalm(A-B);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0314)
0 1 2
1 0 1
2 1 0





277
Maple-Schulung
Skalare Multiplikation
Matrizen werden mit dem Befehl * mit einer Zahl multipliziert.
Beispiel:
k:=5;
k := 5
evalm(k*C);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0314)
5 10 15
20 25 30
35 40 45





278
Maple-Schulung
Skalare Division
Matrizen werden mit dem Befehl / durch eine Zahl dividiert.
Beispiel:
evalm(C/k);
1
 5


 4

 5


7
5

c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0315)
2
5
1
8
5

3
5 


6 

5 


9
5
279
Maple-Schulung
Multiplikation
Matrizen werden mit dem Befehl &* multipliziert.
Beispiel:
evalm(A&*B);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0315)
6 11 14
7 12 15
9 15 18





280
Maple-Schulung
Potenz
Matrizen werden mit dem Befehl ^ potenziert.
Beispiel:
evalm(A^3);





c
MM
Joachim Lammarsch, URZ, Heidelberg
98 112 141
112 127 159
141 159 198
(map0316)





281
Maple-Schulung
Inverse einer Matrix
Die Inverse einer Matrix erh¨alt man durch das Kommando inverse.
Syntax:
inverse(matrix)
Beispiel:
AA:=inverse(A);


AA := 
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0317)
−1 1 0
1 −2 1
0 1 −2
3





282
Maple-Schulung
Zur Kontrolle kann man die Matrix mit ihrer Inversen multipilizieren:
Beispiel:
evalm(A&*AA);





1 0 0
0 1 0
0 0 1





BB:=inverse(B);

BB :=




2 −1 0
−1 2 −1
0 −1 1





evalm(B&*BB);





1 0 0
0 1 0
0 0 1





inverse(C);
Error, (in inverse) singular matrix
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0318)
283
Maple-Schulung
Determinante einer Matrix
Die Determinante einer Matrix erh¨alt man durch das Kommando det.
Syntax:
det(matrix)
Beispiel:
det(A);
3
det(B);
1
det(C);
0
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0319)
284
Maple-Schulung
Transponierte einer Matrix
Die Transponierte einer Matrix erh¨alt man durch das Kommando transpose.
Syntax:
transpose(matrix)
Beispiel:
transpose(C);





c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0310)
1 4 7
2 5 8
3 6 9





285
Maple-Schulung
Rang einer Matrix
Den Rang einer Matrix erh¨alt man durch das Kommando rank.
Syntax:
rank(matrix)
Beispiel:
rank(A);
3
rank(B);
3
rank(C);
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0310)
286
Maple-Schulung
X:=matrix(3,3,[1,2,3,2,4,6,3,6,9]);


X := 
1 2 3
2 4 6
3 6 9





rank(X);
1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0321)
287
Maple-Schulung
56
Funktionen
Bei Funktionen unterscheiden wir Scheinfunktionen der Form
f (x) := x2 − 3x
und echte Funktionen der Form
f := x → x2 − 3x
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0322)
288
Maple-Schulung
Scheinfunktionen
Bei einer Scheinfunktion sind die Parameter starr vorgeben. Andererseits ist von Vorteil,
daß ihre Handhabung sehr einfach ist.
Beispiel:
f:=x^3-4*x;
f := x3 − 4 x
g:=sin(x);
g := sin( x )
f(1);
x( 1 )3 − 4 x( 1 )
g(1);
sin( x )( 1 )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0323)
289
Maple-Schulung
Der Nachteil liegt aber darin, daß zum Einsetzen von Werten der Befehl subs verwendet
werden muß.
Beispiel:
subs(x=3,f);
15
subs(x=y,f);
y3 − 4 y
subs(x=Pi,g);
sin( π )
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0324)
290
Maple-Schulung
Echte Funktionen
M¨ochte man mit echten Funktionen rechnen, muß man die Funktion wie folgt definieren:
Syntax:
func:=variable -> funktionsvorschrift;
Beispiel:
f:=x->x^3-4*x;
f := x → x3 − 4 x
g:=x->sin(x);
g := sin
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0325)
291
Maple-Schulung
f(1);
−3
g(1);
sin( 1 )
f(3);
15
f(y);
y3 − 4 y
g(Pi);
0
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0326)
292
Maple-Schulung
Funktionen mehrerer Variablen
Hat die Funktion mehr als eine Variable, werden die Variablen durch Klammern eingeschlossen.
Syntax:
func:=(variablenliste)-> funktionsvorschrift;
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0326)
293
Maple-Schulung
Beispiel:
g:=(x,y,z)->(x^y)^z;
g := ( x, y, z ) → ( xy )z
g(a,b,c);
( ab )c
g(9,7,5);
2503155504993241601315571986085849
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0329)
294
Maple-Schulung
Kompliziertere Funktionen kann man mittels einer Prozedur darstellen:
Beispiel:


f (x) = 
x2
fu
¨r x > 3
x − 5 fu
¨r x ≤ 3
f:=proc(x)
if x>3
then x^2
else x-5
fi
end;
f := proc(x) if 3 < x then x^2 else x-5 fi end
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0329)
295
Maple-Schulung
f(2);
−3
f(3);
−2
f(5);
25
f(6);
36
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0327)
296
Maple-Schulung
57
Rechnen mit Funktionen
Mit den durch das Einsetzen von Parametern entstehenden Funktionen kann ganz normal gerechnet werden.
Beispiel:
f:=x->x^2;
f := x → x2
g:=y->y^3;
g := y → y 3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0328)
297
Maple-Schulung
• Die Addition:
(f+g)(z);
z2 + z3
• Die Multiplikation:
(f*g)(z);
z5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0328)
298
Maple-Schulung
• Addition, Multiplikation und Subtraktion:
(2*f+5*g-5)(z);
2 z2 + 5 z3 − 5
• Verschachteln von Funktionen:
(f@g)(z);
z6
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0141)
299
Maple-Schulung
58
Graphische Darstellung
Zweidimensionale Grafiken
Beispiel:
plot(sin);
1
0.5
–10
–8
–6
–4
–2
2
4
6
8
10
–0.5
–1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0141)
300
Maple-Schulung
Mit dem Kommando plot kann man einfache Kurven darstellen.
Syntax:
plot(ausdruck,var=von..bis)
Es wird hierbei die Kurve im Bereich von..bis dargestellt, welche durch ausdruck
angegeben ist.
Beispiel:
plot(sin(x),x=-2*Pi..2*Pi);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0141)
301
Maple-Schulung
1
0.5
–6
–4
–2
2
x
4
6
–0.5
–1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0142)
302
Maple-Schulung
Wenn man mehrere Kurven gleichzeitig darstellen m¨ochte, mu
¨ssen diese als Menge von
Kurven geschrieben werden.
Syntax:
plot({ausdr1,ausdr2,...},var=von..bis)
Beispiel:
plot({sin(x),cos(x)},x=-2*Pi..2*Pi);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0142)
303
Maple-Schulung
1
0.5
–6
–4
–2
2
x
4
6
–0.5
–1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0142)
304
Maple-Schulung
Mo¨chte man Kurvenscharen darstellen, kann man, um Schreibarbeit zu sparen, den
Befehl seq verwenden.
Beispiel:
plot({seq(sin(n*x)/n,n=1..3)},x=0..2*Pi);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0142)
305
Maple-Schulung
1
0.5
0
1
2
3
x
4
5
6
–0.5
–1
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0143)
306
Maple-Schulung
Wenn die Kurve Unstetigkeitstellen enth¨alt, ist es fu
¨r Maple V oft schwierig, einen
sinnvollen Zeichenbereich zu finden.
Beispiel:
plot(x/(x^2-1),x=-4..4);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0143)
307
Maple-Schulung
100
x
–100
–200
–300
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0143)
308
Maple-Schulung
In diesem Falle kann man durch einen dritten Parameter den vertikalen Zeichenbereich
einschr¨anken.
Syntax:
plot({ausdr1,ausdr2,...},var=von..bis,von..bis)
Beispiel:
plot(x/(x^2-1),x=-4..4,-10..10);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0143)
309
Maple-Schulung
10
8
6
4
2
–4
–3
–2
–1
0
1
2
x
3
4
–2
–4
–6
–8
–10
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0144)
310
Maple-Schulung
Dreidimensionale Grafiken
Beispiel:
plot3d((x*y)^2,x=-2..2,y=-2..2);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0144)
311
Maple-Schulung
Mit dem Kommando plot3d kann man einfache Kurven darstellen.
Syntax:
plot3d(ausdruck,var1=von..bis,var2=von..bis)
Es wird hierbei die Kurve im Bereich von..bis dargestellt, welche durch ausdruck
angegeben ist.
Beispiel:
plot3d(x^2-y^2,x=-2..2,y=-2..2);
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0144)
312
Maple-Schulung
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0131)
313
Maple-Schulung
59
L¨
osen von Gleichungen
Symbolisches L¨
osen von Gleichungen
Der Befehl solve dient zum symbolischen L¨osen von Gleichungen.
Syntax:
solve(gleichung,unbekannte)
Wenn es nur Unbekannte gibt, braucht sie nicht angegeben zu werden, da es dann fu
¨r
Maple V offensichtlich ist, nach welcher Variable die Gleichung zu l¨osen ist.
Beispiel:
solve(3*x-5=0,x);
5
3
solve(3*x-5=0);
5
3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0132)
314
Maple-Schulung
Beispiel:
solve(x^2-3*x+2,x);
2, 1
solve(x^3-2*x^2-41*x+42,x);
1, −6, 7
solve(x^4+11*x^3-67*x^2-491*x+546,x);
1, −6, 7, −13
solve(x^5+6*x^4-122*x^3-156*x^2+3001*x-2730,x);
1, −6, 7, −13, 5
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0132)
315
Maple-Schulung
Verwendet man noch weitere Konstanten, muß angegeben werden, nach welcher Variablen die Gleichung gel¨ost werden soll.
Beispiel:
solve(a*x^2+b*x+c);
{ c = −a x2 − b x, a = a, x = x, b = b }
solve(a*x^2+b*x+c,x);
√
√
1 −b + b2 − 4ac 1 −b − b2 − 4ac
,
2
a
2
a
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
316
Maple-Schulung
Wenn solve erkennt, daß eine L¨osung existiert, sie aber nicht angegeben werden kann,
verwendet es das Kommando RootOf zur Angabe der L¨osung. Hier wird die charakteristische Gleichung zur Darstellung der Nullstellen verwendet.
Beispiel:
solve(x^4+11*x^3-67*x^2-491*x+545,x);
RootOf( Z 4 + 11 Z 3 − 67 Z 2 − 491 Z + 545)
solve(x^5+6*x^4-122*x^3-156*x^2+3001*x-2731,x);
RootOf( Z 5 + 6 Z 4 − 122 Z 3 − 156 Z 2 + 3001 Z − 2731)
allvalues(");
−12.99997166, −6.000142711, 1.000425207, 4.999368728, 7.000320431
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
317
Maple-Schulung
solve(x^6+x+1);
RootOf( Z 6 + Z + 1 )
allvalues(");
−.7906671888 − .3005069203 I,
−.7906671888 + .3005069203 I,
−.1547351445 − 1.038380754 I,
−.1547351445 + 1.038380754 I,
.9454023333 − .6118366938 I,
.9454023333 + .6118366938 I
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
318
Maple-Schulung
Beispiel:
solve(sin(x)+cos(x),x);
1
− π
4
solve(1/2+sin(x)*cos(x),x);
1
3
− π, π
4
4
solve(1/4+sin(x)*cos(x),x);
1
arctan( RootOf(1 + Z 4 − 4 Z 2 )3 − 2 RootOf(1 + Z 4 − 4 Z 2 ),
2
1
RootOf(1 + Z 4 − 4 Z 2 ))
2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
319
Maple-Schulung
allvalues(%);
√ 1√
1 1√
1√ 3 √
1√
arctan( (
6+
2) − 6 − 2,
6+
2),
2 2
2
4
4
√
1√ 3 √
1√
1√
1 1√
arctan( (−
6−
2) + 6 + 2, −
6−
2),
2 2
2
4
4
√ 1√
1√ 3 √
1√
1 1√
arctan( (
6−
2) − 6 + 2,
6−
2),
2 2
2
4
4
√
1√ 3 √
1√
1√
1 1√
6+
2) + 6 − 2, −
6+
2)
arctan( (−
2 2
2
4
4
evalf(");
−.2617993848, 2.879793269, −1.308996939, 1.832595715
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
320
Maple-Schulung
Beispiel:
solve(exp(x)+2,x);
ln(−2)
solve(exp(2*x)+exp(x)+2,x);
1 1 √
1 1 √
ln(− + I 7), ln(− − I 7)
2 2
2 2
solve(exp(6*x)+exp(x)+2,x);
ln(RootOf( Z 6 + Z + 2))
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0133)
321
Maple-Schulung
allvalues(%);
ln(−.9210666046 − .4532628610 I), ln(−.9210666046 + .4532628610 I),
ln(−.1025537771 − 1.136848701 I), ln(−.1025537771 + 1.136848701 I),
ln(1.023620382 − .6393805299 I), ln(1.023620382 + .6393805299 I)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0134)
322
Maple-Schulung
Numerische L¨
osung von Gleichungen
Mo¨chte man die L¨osung der Gleichung in Gleitpunktdarstellung, dann benutzt man den
Befehl fsolve.
Syntax:
fsolve(gleichung,unbekannte)
Beispiel:
fsolve(x^3-3*x+1,x);
−1.879385242, .3472963553, 1.532088886
fsolve(2*x^2-6*x-3,x);
−.4364916731, 3.436491673
fsolve(x^3+2*x-1,x);
.4533976515
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0135)
323
Maple-Schulung
Normalerweise erh¨alt man durch fsolve nur die reellen L¨osungen. Mit Hilfe der Option
complex werden auch die komplexen L¨osungen berechnet.
Syntax:
fsolve(gleichung,unbekannte,complex)
Beispiel:
fsolve(x^3+2*x-1,x,complex);
−.2266988258 − 1.467711509I,
−.2266988258 + 1.467711509I,
.4533976515
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0135)
324
Maple-Schulung
Oft findet fsolve gar keine oder nur eine L¨osung, obwohl mit Sicherheit mehrere L¨osungen existieren. Dann ist es fu
¨r Maple V hilfreich, wenn man angibt, in welchem Intervall
eine Nullstelle zu erwarten ist. Hier ist auch oft ein Graph nu
¨tzlich.
Syntax:
fsolve(gleichung,unbekannte,var=von..bis)
Beispiel:
fsolve(cos(x^2)-x/3,x);
2.371500399
Dieses Beispiel hat mehr als eine Lo¨sung, wie eine Grafik leicht zeigt.
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0136)
325
Maple-Schulung
Beispiel:
plot(cos(x^2)-x/3,x=-4..4);
2
1
x
–1
–2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0136)
326
Maple-Schulung
Beispiel:
plot(cos(x^2)-x/3,x=-4..0);
2
1.5
1
0.5
–4
c
MM
–3
–2
x
Joachim Lammarsch, URZ, Heidelberg
–1
(map0136)
0
327
Maple-Schulung
Beispiel:
plot(cos(x^2)-x/3,x=0..4);
1
0.8
0.6
0.4
0.2
x
0
–0.2
–0.4
–0.6
–0.8
–1
–1.2
–1.4
–1.6
–1.8
–2
–2.2
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0136)
328
Maple-Schulung
Beispiel:
fsolve(cos(x^2)-x/3,x,x=0..2);
1.094269232
fsolve(cos(x^2)-x/3,x,x=2.5..3);
2.607739533
fsolve(cos(x^2)-x/3,x,x=-2.5..-1.5);
−1.996097497
fsolve(cos(x^2)-x/3,x,x=-1.9..-1.0);
−1.439140143
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0137)
329
Maple-Schulung
L¨
osen von Gleichungssystemen
Ganze Gleichungssysteme lassen sich ebenfalls mit dem Befehl solve l¨osen. Man muß
nur sowohl die Gleichungen als auch die Unbekannten als Mengen schreiben.
Syntax:
solve({glchg1,glchg2,...},{unbek1,unbek2,...})
Beispiel:
solve({x+y=2,x-y=4},{x,y});
{y = −1, x = 3}
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0137)
330
Maple-Schulung
Beispiel:
solve({x+y+z=4,x-3*y+z,2*x-y+z},{x,y,z});
{ y = 1, z = 5, x = −2 }
solve({x^2+y^2=25,x*y=12},{x,y});
{y = −4, x = −3}, {y = −3, x = −4},
{y = 3, x = 4}, {y = 4, x = 3}
solve({3*x-4*y=-5,8*y-6*x=10},{x,y});
5
4
x = y − ,y = y
3
3
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0138)
331
Maple-Schulung
Mo¨chte man die L¨osungen der Gleichungen weiterverwenden, kann man dies u
¨ber den
Befehl subs machen, indem man die L¨osung tempor¨ar in Variablen einsetzt.
Beispiel:
l:=solve(x^2-2*x-8);
l := 4, −2
subs(x=l[1],cos(1/x^2));
cos
1
16
cos
1
4
subs(x=l[2],cos(1/x^2));
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0138)
332
Maple-Schulung
l:=solve({x^2+y^2=10,x+y+4},{x,y});
l := { y = −3, x = −1 }, { y = −1, x = −3 }
subs(l[1],x^2+2*x*y+y^2);
16
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0331)
333
Maple-Schulung
60
Differentiation
Der Befehl diff bildet die Ableitung der im ersten Parameter angegebenen Funktion
nach den in den weiteren Parametern angegebenen Variablen.
Syntax:
diff(funktion, variablen);
Beispiel:
diff(x^3+x^2,x);
3x2 + 2x
diff(x^3+x^2,x,x);
6x + 2
diff(x^3+x^2,x,x,x);
6
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0332)
334
Maple-Schulung
Fu
¨r Mehrfachableitungen bietet sich die Kurzschreibweise x$n an, die von Maple V zu
x,x,x,...,x umgewandelt wird.
Beispiel:
diff(x^3+x^2,x$3);
6
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0332)
335
Maple-Schulung
Selbstversta¨ndlich kennt Maple V alle Ableitungsregeln wie die Produktregel, innere
Ableitung usw.
Beispiel:
diff(sin(cos(x)),x);
− cos(cos(x)) sin(x)
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0333)
336
Maple-Schulung
Prinzipiell geht Maple V bei der Ableitung davon aus, daß die nicht n¨aher definierten
Symbole konstant sind.
Beispiel:
diff(a*x+b,x);
a
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0333)
337
Maple-Schulung
Wenn a und b Funktionen von x sind, muß man das durch (x) kennzeichnen.
Beispiel:
diff(a(x) * x + b(x), x);
∂
∂
a(x) x + a(x) +
b(x)
∂x
∂x
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0334)
338
Maple-Schulung
61
Die Ableitung von Funktionen mit mehreren Variablen
In den Parametern von diff k¨onnen mehrere Variablen angegeben werden. Das Kommando bildet zuerst die Ableitung nach der einen, anschließend die Ableitung nach der
anderen Variablen.
Beispiel:
diff((x^2 + y^3)^4, x, y);
2
72 x2 + y 3 xy 2
Bei der Ableitung von Funktionen mit mehreren Variablen geht diff davon aus, daß
d
zwischen den Variablen keine Abha¨ngigkeiten existieren. dx
y wird daher zu 0 vereinfacht.
Beispiel:
diff((x^2 + y^3)^4, x);
3
8 x2 + y 3 x
c
MM
Joachim Lammarsch, URZ, Heidelberg
(map0336)
339
Maple-Schulung
Wenn eine Funktion von mehreren Variablen abh¨angig ist, muß man eine ganze Liste
der Variablen angeben.
Beispiel:
diff( f(x,y,z), x$2, y, z$2);
∂5
f (x, y, z)
∂z 2 ∂x2 ∂y
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
340
Maple-Schulung
Inhaltsverzeichnis
1 Was ist Maple V?
1
2 Verfu
¨ gbarkeit
2
3 Aufruf von Maple V
UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
4 Beenden von Maple V
5
5 Wie bekomme ich Hilfe?
6
6 Literatur
8
7 Maple V als Taschenrechner
9
8 Ergebnisse weiterverwenden
17
9 Variablen
20
10 Ganzzahlige Division
27
iquo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
341
Maple-Schulung
irem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
11 Primzahlen
isprime . . .
ithprime . .
nextprime . .
prevprime . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12 Rationale Ausdru
¨ cke
32
32
33
34
36
38
13 Gleitkommazahlen
40
Float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
14 Rechengenauigkeit
42
15 Numerische Auswertung
45
16 Umwandeln in ganze Zahlen
trunc . . . . . . . . . . . . . . .
round . . . . . . . . . . . . . . .
floor . . . . . . . . . . . . . . .
ceil . . . . . . . . . . . . . . . .
51
52
53
54
55
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
342
Maple-Schulung
17 Komplexe Zahlen
56
Realteil einer komplexen Zahl . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Imagina¨rteil einer komplexen Zahl . . . . . . . . . . . . . . . . . . . . . . . . . 60
18 Konstanten
62
19 Symbolisches Rechnen
64
20 Vereinfachung
simplify . . . .
normal . . . . .
expand . . . . .
factor . . . . .
66
66
69
71
74
und
. . .
. . .
. . .
. . .
Umformung
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21 Substitution von Variablen
77
22 Interne Variable
82
23 Maßeinheiten
83
24 Folgen
90
25 Listen
92
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
343
Maple-Schulung
26 Mengen
107
27 Extrahieren von Operanden
111
Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
28 Anzahl der Operanden
119
29 Tabellen
123
30 Felder (Arrays)
135
31 Vektoren und Matrizen
139
Rechnen mit Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Rechnen mit Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
32 Programmierbeispiel 1
143
33 Prozeduren
149
34 Beenden einer Prozedur
155
35 Speichern von Prozeduren
162
36 Laden von Prozeduren
164
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
344
Maple-Schulung
37 Ausgabe am
print . . . .
lprint . . . .
printf . . . .
Bildschirm
168
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
38 printf
174
39 Lesen von Zahlen aus Dateien
178
40 Eingabe einer Zeichenkette
183
Lesen aus einer Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Lesen von der Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
41 Extrahieren von Zahlen und Zeichenketten aus einer Zeichenkette
188
42 Vergleichsoperatoren
192
43 Logische Ausdru
¨ cke
195
44 Logische Operatoren
198
and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
345
Maple-Schulung
45 Entscheidungen
205
Der if-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Der if ... else-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Der if ... elif ... else-Befehl . . . . . . . . . . . . . . . . . . . . . . . . 213
46 while
218
47 for
229
48 Geschachtelte Schleifen
238
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
49 Sieb des Eratosthenes:
242
¨
50 Ubergehen
von Befehlen in Schleifen
246
51 Abbrechen von Schleifen
248
52 Erweiterungen in Maple V
250
53 Rechnen mit Matrizen
253
matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
submatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
346
Maple-Schulung
row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
col . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
augment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
54 Zeilen- und Spaltenoperationen
mulcol . . . . . . . . . . . . . . . . .
addrow . . . . . . . . . . . . . . . . .
addcol . . . . . . . . . . . . . . . . .
swaprow . . . . . . . . . . . . . . . .
swapcol . . . . . . . . . . . . . . . .
.
.
.
.
.
55 Rechnen mit Matrizen mit linalg
Addition . . . . . . . . . . . . . . . . .
Subtraktion . . . . . . . . . . . . . . .
Skalare Multiplikation . . . . . . . . .
Skalare Division . . . . . . . . . . . . .
Multiplikation . . . . . . . . . . . . . .
Potenz . . . . . . . . . . . . . . . . . .
Inverse einer Matrix . . . . . . . . . .
Determinante einer Matrix . . . . . . .
Transponierte einer Matrix . . . . . . .
Rang einer Matrix . . . . . . . . . . .
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
261
. 262
. 263
. 264
. 265
. 266
.
.
.
.
.
.
.
.
.
.
274
. 276
. 277
. 278
. 279
. 280
. 281
. 282
. 284
. 285
. 286
347
Maple-Schulung
56 Funktionen
288
Scheinfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Echte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Funktionen mehrerer Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . 293
57 Rechnen mit Funktionen
297
58 Graphische Darstellung
300
Zweidimensionale Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Dreidimensionale Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
59 Lo
314
¨sen von Gleichungen
Symbolisches Lo¨sen von Gleichungen . . . . . . . . . . . . . . . . . . . . . . . 314
Numerische L¨osung von Gleichungen . . . . . . . . . . . . . . . . . . . . . . . 323
Lo¨sen von Gleichungssystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
60 Differentiation
334
61 Die Ableitung von Funktionen mit mehreren Variablen
339
c
MM
Joachim Lammarsch, URZ, Heidelberg
(dummy)
348
Document
Kategorie
Technik
Seitenansichten
10
Dateigröße
751 KB
Tags
1/--Seiten
melden