• Keine Ergebnisse gefunden

Neben den bisher betrachteten Rechenfertigkeiten und der Programmierbarkeit, die ein CAS aus-zeichnen, spielt das

in ihnen gespeicherte mathematische Wissen

f¨ur Anwender die entscheidende Rolle. Dieses deckt, wenigstens insofern wir uns auf die dort vermittelten algorithmischen Fertigkeiten beschr¨anken, weit mehr als den Stoff der gymnasialen Oberstufe ab und umfasst die wichtigsten symbolischen Kalk¨ule der Analysis (Differenzieren und Integrieren, Taylorreihen, Grenzwertberechnung, Trigonometrie, Rechnen mit speziellen Funktio-nen), der Algebra (Matrizen- und Vektorrechnung, L¨osen von linearen und polynomialen Glei-chungssystemen, Rechnen in Restklassenbereichen), der Kombinatorik (Summenformeln, L¨osen von Rekursionsgleichungen, kombinatorische Zahlenfolgen) und vieler anderer Gebiete der Mathe-matik.

F¨ur viele Kalk¨ule aus mathematischen Teildisziplinen, aber zunehmend auch solche aus verwand-ten Bereichen anderer Natur- und Ingenieurwissenschafverwand-ten, ja selbst der Finanzmathematik, gibt es dar¨uber hinaus spezielle Pakete, auf die man bei Bedarf zugreifen kann. Dieses sprunghaft wachsende Expertenwissen ist der eigentliche Kern eines CAS als Expertensystem. Man kann mit gutem Gewissen behaupten, dass heute bereits große Teile der algorithmischen Mathematik in dieser Form verf¨ugbar sind und auch algorithmisches Wissen aus anderen Wissensgebieten zu-nehmend erschlossen wird. In dieser Richtung spielt das System Mathematicaseit Jahren eine Vorreiterrolle.

In dem Zusammenhang ist die im deutschen Sprachraum verbreitete Bezeichnung

” Computeral-gebra“ irref¨uhrend, denn es geht durchaus nicht nur um algebraische Algorithmen, sondern auch um solche aus der Analysis und anderen Gebieten der Mathematik. Entscheidend ist allein der algebraische Charakterder entsprechenden Manipulationen als endliche Kette von Umformungen symbolischer Ausdr¨ucke. Und genau so geht ja etwa der Kalk¨ul der Differentialrechnung vor: die konkrete Berechnung von Ableitungen elementarer Funktionen erfolgt nicht nach der (auf dem Grenzwertbegriff aufbauenden) Definition, sondern wird durch geschicktes Kombinieren verschie-denerRegeln, wie der Ketten-, der Produkt- und der Quotientenregel, auf entsprechende Grunda-bleitungen zur¨uckgef¨uhrt.

Hier einige Beispielrechnungen mitMuPAD3:

diff(x^2*sin(x)*ln(x+a),x$2); # Zweite Ableitung # 2 sin(x) ln(a+x) + 4xcos(x) ln(a+x) +4xsin(x)

(a+x) −x2sin(x) ln(a+x) +2x2 cos(x)

(a+x) −x2 sin(x) (a+x)2

Beim Integrieren kommen dar¨uber hinaus auch prozedurale Verfahren zum Einsatz, wie etwa die Partialbruchzerlegung, die ihrerseits die Faktorzerlegung des Nennerpolynoms und das L¨osen von (linearen) Gleichungssystemen verwendet, die aus einem Ansatz mit unbestimmten Koeffizienten gewonnen werden. Auf diese Weise, und das ist ein weiteres wichtiges Moment des Einsatzes von CAS,

spielen algorithmische Fertigkeiten aus sehr verschiedenen Bereichen der Mathematik nahtlos miteinander zusammen.

3Die Ausgabe der Ergebnisse weicht in verschiedenenMuPAD-Versionen leicht voneinander ab. Sie ist dar¨uber hinaus von mir in einigen F¨allen leicht redigiert worden.

p:=(x^3+x^2+x-2)/(x^4+x^2+1);

Expertenwissen wird zum L¨osen von verschiedenen Problemklassen ben¨otigt, wobei der Nutzer in den seltensten F¨allen wissen (und wissen wollen) wird, welche konkreten Algorithmen im jeweili-gen Fall jeweili-genau anzuwenden sind. Deshalb b¨undeln die CAS die algorithmischen F¨ahigkeiten zum Aufl¨osen gewisser Sachverhalte in einem oder mehreren

solve-Operatoren,

die den Typ eines Problems erkennen und geeignete L¨osungsalgorithmen aufrufen.

So b¨undelt der solve-Operator vonMuPADWissen ¨uber Algorithmen zum Auffinden der Null-stellen univariater Polynome, von linearen und polynomialen Gleichungssystemen und selbst Dif-ferentialgleichungen k¨onnen damit gel¨ost werden.

solve(x^2+x+1,x);

Selbst f¨ur kompliziertere Gleichungen, die trigonometrische Funktionen enthalten, werden L¨osun-gen in mittlerweile sch¨oner Form angegeben.

6 + 2k π| k∈Zo

∪ 5π

6 + 2k π |k∈Z

Eine Spezialit¨at vonMuPAD ist die vollst¨andige und mathematisch weitgehend genaue Angabe der L¨osung als L¨osungsmenge, die sich mit entsprechenden Mengenoperationen nun auch gut weiter verarbeiten l¨asst. Sucht man etwa alle L¨osungen obiger Aufgabe im Intervall−10≤x≤10, so kann man diese als Mengendurchschnitt bestimmen und dazu dann N¨aherungswerte ausgeben lassen. Beachten Sie die unterschiedliche Reihenfolge der Elemente in der Printausgabe. Aber es handelt sich ja auch um Mengen.

u1:=s intersect Dom::Interval(-10,10);

π 6,5π

6 ,−7π 6 ,−11π

6 ,13π 6 ,17π

6 ,−19π 6

float(u1);

{−9.948376,−5.759586,−3.665191,0.5235987,2.617993,6.806784,8.901179} Maples L¨osung derselben Aufgabe f¨allt

unbe-friedigender aus. Wenn wir uns erinnern, dass die L¨osungsmenge trigonometrischer Glei-chungen periodisch ist, also mit x auch x+ 2π die Gleichung erf¨ullt, so haben wir aber immerhin schon die H¨alfte der tats¨achlichen L¨osungsmenge gefunden.

solve(sin(x)=1/2);

1 6π

Warum kommt Maple nicht selbst auf die-se Idee? Auch hier hilft erst ein Blick in die (Online-)Dokumentation weiter; setzt man ei-ne spezielle Systemvariable richtig, so erhalten wir das erwartete Ergebnis, allerdings in ei-ner recht verklausulierten Form: B1 und Z1 sind Hilfsvariablen mit den Wertebereichen

B1∈ {0,1} (B wie boolean) und Z1∈Z.

EnvAllSolutions:=true;

solve(sin(x)=1/2);

1 6π+2

3π B1~+ 2π Z1~

Mathematica(wie auch Maxima noch in aktuellen Versionen) antwortet ¨ahnlich, aber bis zur Version 5 gab es keine M¨oglichkeit, die L¨osungsschar in parametrisierter Form auszugeben.

Solve[Sin[x]==1/2,x]

Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found.

nnx→ π 6

oo

Im Handbuch der Version 3 vonMathematica(S. 794) wurde dies wie folgt begr¨undet:

Obwohl sich alle L¨osungen dieser speziellen Gleichung einfach parametrisieren lassen, f¨uhren die meisten derartigen Gleichungen auf schwierig darzustellende L¨osungsmen-gen. Betrachtet man Systeme trigonometrischer Gleichungen, so sind f¨ur eine Para-meterdarstellung diophantische Gleichungssysteme zu l¨osen, was im allgemeinen Fall als algorithmisch nicht l¨osbar bekannt ist.

Wir stoßen mit unserer einfachen Frage also unvermutet an prinzipielle Grenzen der Mathematik, die im betrachteten Beispiel allerdings noch nicht erreicht sind.

Seit Version 5 kann das KommandoReduceverwendet werden, um einen zur Eingabe ¨aquivalenten logischen Ausdruck ¨ahnlicher Qualit¨at wie die Antworten vonMuPADzu generieren.

s=Reduce[Sin[x]==1/2,x]

Die Mathematica-Entwickler st¨utzen sich dabei auf eine andere Philosophie als die MuPAD -Entwickler. W¨ahrend letztere konsequent die MengennotationL ={f(t)|t∈G∧H(t)} verwen-den, welche die L¨osungsmenge durch eine parameterabh¨angige Vorschrift f konstruieren, wobei f¨ur die Parametert∈Gzus¨atzliche NebenbedingungenH(t) aufgestellt sein k¨onnen, st¨utzen sich die ersteren auf die gezielte Umformung dieser Eigenschaften selbst.

s=Reduce[Sin[x]==1/2 ∧ −8<x<8,x]

x=−11π

Aus dieser Antwort k¨onnen gegebenenfalls durchSolvedie L¨osungen in der traditionellen Notation extrahiert werden.

Oft haben wir nicht nur mit der Frage der Vollst¨andigkeit der angegebenen L¨osungsmenge zu k¨ampfen, sondern auch mit unterschiedlichen Darstellungen ein und desselben Ergebnisses, die sich aus unterschiedlichen L¨osungswegen ergeben. Betrachten wir etwa die Aufgabe

solve(sin(x)+cos(x)=1/2,x);

Eine m¨ogliche Umformung, die uns die vollst¨andige L¨osungsmenge liefert, w¨are sin(x) + cos(x) = sin(x) + sinπ

w¨ahrendMaplefolgende Antwort liefert:

EnvAllSolutions:=true:

s=Reduce[Sin[x]+Cos[x]==1/2,{x}] c1Z

x==2πc1+ 2 arctan