Wie Sie eigene Funktionen implementieren und mit ihnen umgehen, wird im wesentlichen in diesem Kapitel beschrieben.
![]() |
Der Befehl f(x):= x^2 definiert keine Funktion! Statt dessen wird die Zeichenfolge "f(x)" als Variablenname aufgefaßt. Ein Ausdruck der Form f(2) ist daher undefiniert. |
1. Mit dem Pfeil-Operator: (der mathematischen Notation am ähnlichsten)
Beispiele: | g:= (x,y,z) -> (3*x*y, cos(z));
h:= x -> (2*x+1, exp(x)); i:= (x,y) -> 2*x-y*tan(x); |
2. Mit dem Befehl unapply:
Die allgemeine Form für unapply lautet:
Die Variablen werden als Folge angegeben. Mit dem unapply-Befehl
lassen sich nur skalarwertige Funktionen erzeugen.
![]() |
Bei der Definition von Funktionen sollte man keine belegten Variablen verwenden. Sonst wird bei Abfrage der Funktion mit den gewählten Variablen ein Wert statt des Funktionstermes zurückgegeben. Der Wert wird z.B. durch verzögerte Auswertung gelöscht. |
![]() |
Der Pfeiloperator und der Befehl unapply |
Funktionen werden in der oben angegeben Schreibweise als Operatoren interpretiert. Sie können daher unter Beachtung der Dimensionen des Urbild- und des Bildraumes beliebig verknüpft werden. Mögliche Verknüpfungsoperatoren sind +,-,* und /.
Funktionen lassen sich auch hintereinanderschalten: Funktion1@Funktion2. Konkret bedeutet das: (f@g)(x) = f(g(x)). Das Ergebnis von g(x) wird als Argument von f benutzt. Die Dimension des Bildraumes von g muß gleich der Dimension des Urbildraumes von f sein.
Funktion@@n bewirkt die n-fache Hintereinanderschaltung
der Funktion.
![]() |
Unter Maple lassen sich auch Funktionen f@g hintereinanderschalten, bei denen die Bildraumdimension von g ungleich der Urbildraumdimension von f ist. Das Ergebnis ist grober Unfug (siehe nachfolgendes Beispiel). |
![]() |
Anwendung der Verknüpfungsoperatoren |
Stückweise definierte Funktionen lassen sich mit dem piecewise-
Befehl handhaben. Da piecewise aber keine Standardfunktion ist,
muß es erst mit
readlib(piecewise) eingelesen werden. Der Befehl hat folgende
allgemeine Form:
piecewise( Bedingung_1, Ausdr_1, ... ,Bedingung_n, Ausdr_n, Default_ausdruck)
Die Auswertung ist denkbar einfach: Ist Bedingung_1 wahr, so benutze Ausdr_1. Ist Bedingung_2 wahr, so benutze Ausdr_2, auch wenn Bedingung_1 wahr ist und überschreibe ggf. Ausdr_1, usw. Der Default_ausdruck deckt alle Definitionsbereiche ab, die durch die Bedingungen_1 bis Bedingungen_n nicht erfaßt worden sind. Wird kein Default_ausdruck angegeben, so gilt standardmäßig 0 als Default_ausdruck.
Die Bedingungen können Gleichungen, Ungleichungen und logische Verknüpfungen von solchen sein. Akzeptiert werden als Bedingungen auch polynomiale Ausdrücke wie z.B. 3x³+x²-x < 7 und sogar stückweise Funktionen.
Mit piecewise-definierte Funktionen können differenziert
und integriert werden.
![]() |
Die Funktion piecewise |
![]() |
Sindbad, der Seefahrer |
Der D-Operator berechnet Ableitungen von Funktionen:
... mit dem Kommando diff:
diff berechnet die Ableitung eines beliebigen Ausdruckes:
Diff ist die träge Variante von diff. Der Ausdruck
wird damit nicht differenziert, sondern in Schönschrift mit dem Differentialoperator
vor dem Ausdruck dargestellt.
![]() |
Zusammenhang zwischen dem D-Operator und diff:
D(f) = unapply(diff(f(x), x), x) |
Ist f eine Funktion in n Veränderlichen, so wird durch
![]() |
Differentiation |
symbolische Integration
Ausdruck ist dabei der nach der Variable zu integrierende Funktionsterm. Im Ergebnis kommen keine Integrationskonstanten vor.
Beispielsweise liefert int(x^2, x) den Ausdruck x³/3.
Die Variablen der Funktion müssen ohne Wert sein, da Maple sonst eine Fehlermeldung produziert.
Int ist die träge Form von int. Die Ausgabe des
trägen Befehls ist das Integral in Schönschrift. Maple gibt das
Integral unausgewertet zurück.
![]() |
Befinden sich im Integrationsbereich Unstetigkeitsstellen, über die hinweg integriert werden soll, so muß die Option continuous benutzt werden. Eine andere Möglichkeit ist die Aufsplittung des Integrals in zwei Integrale mit der Unstetigkeitsstelle als neuer Grenze. |
![]() |
Kurvendiskusion |
Integrale, deren Grenzen plus- und/oder minus unendlich sind, werden meist problemlos ausgewertet. Sollten dennoch Probleme auftreten oder wird ein Funktionswert im Integrationsbereich unendlich groß, so ist die Option CauchyPrincipalValue als dritter Parameter ratsam. Unter Maple heißt unendlich infinity.
Beispielsweise kann Maple int(1/x^3, x=-2..infinity) nicht berechnen, da sich im Inneren des Intervalls [-2,1] eine Polstelle befindet. Erst int(1/x^3,x=-2..infinity,'CauchyPrincipalValue') liefert den Wert des Integrals. Der Parameter CauchyPrincipalValue veranlaßt Maple dazu, falls sich ein unendlich großer Funktionswert im Integrationsbereich befindet, den links- und rechtsseitigen Grenzwert zu berechnen.
Wird ein Integral unausgewertet zurückgegeben, ist Maple nicht in der Lage, eine symbolische Lösung zu finden. Einen Ausweg bietet die numerische Integration. Diese muß mit evalf(int(..)) oder evalf(Int(..)) erzwungen werden.
Der Unterschied besteht darin, daß evalf(int(..)) erst
symbolisch integriert und dann das Ergebnis in eine Fließkommazahl
umwandelt, und evalf(Int(..)) ein numerisches Integrationsverfahren
benutzt. Welche Methode für die numerische Integration verwendet wird,
steht in den Hilfeseiten zu evalfint.
![]() |
Numerische Integration mit int |
![]() |
Problemfälle bei der Integration |