Allgemeine Informationen finden Sie in der Haupt-Hilfeseite: ?math .
> restart:
Zunächst muß sichergestellt sein, daß Maple V das Paket finden kann. Dazu muß der Pfad zu dem Verzeichnis, in welchem sich die Bibliotheksdateien befinden, libname zugewiesen werden.
> #libname := `c:/maplev4/math`, libname;
Nun werden mit with die Kurznamen der Paketfunktionen initialisiert.
> with(math);
[END, Makehelp, PSconv, V, Write, WriteLn, _Zval, addlib, addtbl,
arclen, assumed, asym, cartgridR3, cartprod, cont, curvature,
curveplot, cutzeros, deg, dellib, deltbl, domain, entry, ex,
extrema, fnull, getindets, getreals, gridplot, inflection,
inter, isCont, isDiff, liblist, lineangle, load, ls, mat,
mean, mreadlib, nondiff, normale, rad, rangemembers, realsort,
redefdim, retrieve, rootof, rotation, seqplot, setdef,
singularity, slopefn, symmetry, tangente, un]
Gegeben sei folgende reelle Funktion:
> f := x -> x^2*exp(-x);
Den Definitionsbereich ermittelt math/domain :
> domain(f(x));
Symmetrieeigenschaften bestimmt math/symmetry :
> symmetry(f(x));
Schnittstelle(n) mit der Abszisse (Nullstellen mit math/fnull ):
> fnull(f(x), x);
Schnittstelle mit der Ordinate:
> f(0);
Die Funktion und ihre ersten drei Ableitungen:
> f(x);
> f1 := diff(f(x), x);
> f2 := diff(f(x), x$2);
> f3 := diff(f(x), x$3);
Zusammenfassung nach e(-x) :
> f1 := un(collect(f1, exp(-x)));
> f2 := un(collect(f2, exp(-x)));
> f3 := un(collect(f3, exp(-x)));
Extremstellen berechnet math/ex :
> ex(f(x), x);
Wendestellen bestimmt math/inflection :
> inflection(f(x), x);
Verhalten im Unendlichen:
> limit(f(x), x=-infinity);
> limit(f(x), x=infinity);
> restart:
> with(math):
> f := x -> abs(1/10*x^3+27/10)-2;
> fnull(f(x), x);
Der Graph der Funktion zeigt, daß die Funktion f(x) an der Stelle x=-3 nicht differenzierbar ist und der Graph an der Stelle x=0 eine Sattelstelle aufweist. Den Graphen zusammen mit `Koordinatenpapier` stellt math/gridplot dar.
> gridplot(f(x), x=-5 .. 3, -3 .. 4);
math/un vereinfacht die Verwendung von unapply :
> f1 := un(diff(f(x), x));
> f2 := un(diff(f(x), x$2));
Mit den in Maple V vorhandenen Mittel läßt sich nicht erkennen, daß f an der Stelle x=-3 nicht differenzierbar ist (es sei denn man gibt f1(-3) ein und erhält die entsprechende Fehlermeldung), solve gibt bei der Lösung der Gleichung f'(x) = 0 nur die Stelle x=0 zurück:
> solve(f1(x), x);
> is(f2(0) <>0);
Die Funktion math/ex ermittelt auch Extrema an Stellen, an denen eine Funktion nicht differenzierbar ist.
> ex(f(x), x);
Mit math/nondiff können Sie auch explizit nach nicht differenzierbaren Stellen suchen:
> nondiff(f(x), x);
math/inflection gibt auch Sattelstellen zurück.
> inflection(f(x), x);
Legen Sie nun mit math/tangente eine Tangente an den Graphen der Funktion f(x) an der Stelle x=0 an und zeichnen Sie den Graphen der Funktion f zusammen mit dieser Tangente:
> tangente(f(x), x=0);
> curveplot(f(x), x=0, x=-5 .. 3, y=-3 .. 4, length=4, tangentline=[color=navy, thickness=2]);
> restart:
> with(math):
> f := x -> sqrt((4-x)/(2+x));
math/domain bestimmt den Definitionsbereich einer Funktion in einer Unbestimmten. Randpunkte, welche nicht zum Definitionsbereich gehören, sind mit Open gekennzeichnet.
> domain(f(x));
> symmetry(f(x));
> fnull(f(x), x);
> ex(f(x), x);
> inflection(f(x), x);
> gridplot(f(x), x=-3 .. 5, -1 .. 2, step=[1, 0.5]);
Mit math/cont bzw. math/isCont läßt sich überprüfen, ob die Funktion an einer Stelle stetig ist. Hier ist f an der Stelle 4 stetig,
> cont(f(x), x=4);
da der Grenzwert der rechtsseitige Grenzwert der Funktion an der Stelle 4
> limit(f(x), x=4, left);
mit dem Funktionswert übereinstimmt.
> f(4);
> restart:
> with(math):
> f := x -> (x^2-3*x+2)/(x^2+2*x-3);
math/singularity stellt fest, daß die Funktion an den Stellen x=-3 und x=1 nicht definiert ist.
> singularity(f(x), x);
cont erlaubt, diese Definitionslücke näher zu untersuchen:
> cont(f(x), x=-3);
> cont(f(x), x=1);
Die Funktion ist also an der Stelle x=1 stetig hebbar.
Nullstellen:
> fnull(f(x), x);
Dieses Ergebnis ist falsch, da (s.o.)
> domain(f(x), singularity);
der Wert 1 nicht zum Definitionsbereich gehört. Um zu sehen, warum fnull hier ein inkorrektes ergebnis zurückgibt, schauen Sie sich mit infolevel die Vorgehensweise bei der Bearbeitung der Funktion durch fnull an. Da fnull bereits errechnete Ergebnisse speichert, muß die Erinnerungstabelle vorher mit forget gelöscht werden, damit die Bearbeitungsschritte angezeigt werden können:
> infolevel[fnull] := 1: readlib(forget)(fnull);
> fnull(f(x), x);
fnull: using default domain (_MathDomain): -10 .. 10
fnull: Fraction found, now proceeding with numerator: x^2-3*x+2
fnull: using fsolve to determine roots
fnull: Searching for roots in expression x^2-3*x+2
fnull: Searching for roots in derivative 2*x-3
fnull: Roots found in original function: 1.000000000, 2.000000000
fnull: Possible roots found in derivative: 1.500000000
Anhand der zweiten Zeile erkennt man, daß fnull untersucht, ob die übergebene Funktion ein Bruch ist, und rechnet dann standardmäßig mit dem Zähler weiter. Um dieses zu unterbinden, geben Sie die Option numerator=false an.
> fnull(f(x), x, numerator=false);
fnull: using default domain (_MathDomain): -10 .. 10
fnull: using fsolve to determine roots
fnull: Searching for roots in expression (x^2-3*x+2)/(x^2+2*x-3)
fnull: Searching for roots in derivative (2*x-3)/(x^2+2*x-3)-(x^2-3*x+2)/(x^2+2*x-3)^2*(2*x+2)
fnull: Roots found in original function: 2.000000000
fnull: Possible roots found in derivative: none
Rücksetzen von infolevel[fnull]:
> infolevel[fnull] := 0:
Berechnen Sie nun die Asymptote der Funktion mit math/asym :
> asym(f(x), x);
Berechnen Sie die Steigung der Funktion im Punkt x=2 mit math/slopefn :
> slopefn(f(x), x=2);
Die Bogenlänge der Kurve im Intervall [2, 6] ermittelt math/arclen :
> arclen(f(x), x=2 .. 6);
[... Bug in Release 5 Release Candidate 2 ...]
> evalf(%);
> restart:
> with(math):
solve gibt u.a. bei trigonometrischen Funktionen immer nur eine Lösung zurück:
> solve(sin(x), x);
Durch Setzen der Umgebungsvariable _EnvAllSolutions erhält man aber generelle Lösungen:
> _EnvAllSolutions := true:
> solve(sin(x), x);
Normalerweise kann die Variable _Z1 nicht mit subs durch einen Wert ersetzt werden. Das Paket math enthält daher eine modifizierte Version der Unterprozedur, die von solve bei nicht-transzendenten Funktionen benutzt wird (siehe auch ? math,MLmodi ).
> subs(_Z1=1, %);
Wünschen Sie die Rückgabe mehrerer aufeinanderfolgender Lösungen, so verwenden Sie math/_Zval .
> _Zval(%%, -3*Pi .. 3*Pi);
> evalf(%);
> restart:
> with(math):
math verfügt auch über eine Reihe anderer Tools:
Nachfolgende Nullen können z.B. aus einer Fließkommazahl mit math/cutzeros herausgelöscht werden:
> solve((x-4.11)^4, x);
> op({%});
> cutzeros(%);
math/getreals ermittelt alle reellen Werte einer Folge:
> solve(x^3-1, x);
> getreals(%);
math/realsort sortiert reelle Werte in aufsteigender Reihenfolge:
> folge := 1, 0, exp(1), -Pi;
> sort([folge]);
> realsort(folge);
Es stehen viele weitere Funktionen zur Verfügung. Einen Überblick gibt die Hauptseite der Onlinehilfe zu math. Die Befehle sind ferner einzeln beschrieben.
Author: Alexander F. Walz, alexander.f.walz@t-online.de
Original file location: http://www.math.utsa.edu/mirrors/maple/mplmcal.htm