• Keine Ergebnisse gefunden

Computeralgebrasysteme als Expertensysteme

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 SystemMathematicaseit 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 Charakter der 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 mitMaxima:

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen zur Vorlesung 19

diff(x^2*sin(x)*log(x+a),x,2)

−x2 sin(x) log(x+a) + 2 sin(x) log(x+a) + 4xcos(x) log(x+a) +4xsinx

x+a −x2 sin(x)

(x+a)2 +2x2 cos(x) x+a

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.

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

−2 +x+x2+x3 1 +x2+x4 u : integrate(p,x)

−1

2 log x2+x+ 1

+ log x2−x+ 1

− 1

√3 arctan

2x+ 1

√3

diff(u,x)

− 2

3(2x+1)2

3 + 1− 2x+ 1

2 (x2+x+ 1) + 2x−1 x2−x+ 1 ratsimp(%-p)

0 integrate(1/(x^4-1),x)

−1

4 log(x+ 1)−1

2 arctan(x) +1

4 log(x−1) Wir k¨onnen die letzte Integrationsaufgabe f¨ur

verschiedene Exponenten untersuchen und da-mit schon einmal die Leistungsf¨ahigkeit eines CAS testen. Eine entsprechende Testprozedur h¨atte f¨ur Maxima etwa diese Gestalt. Die Ergebnisse entsprechen weitgehend denen, die nach der Theorie zu erwarten sind, sofern die Teilintegrale exakt berechnet werden k¨onnen.

intChallenge(n):=(

f:1/(1-x^n), u:integrate(f,x), v:diff(u,x), w:ratsimp(v-f), [n,f,u,v,w]

);

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 lassen sich mit dem solve-Operator von Maxima Gleichungen und Gleichungssysteme und auch einfache goniometrische Bestimmungsgleichungen l¨osen.

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

solve: using arc-trig functions to get a solution. Some solutions will be lost.

h x= π

6 i

Allein das letzte Ergebnis ist unbefriedigend, da die Gleichung nat¨urlich weitere L¨osungen hat, wie ein Plotplot2d(sin(x)-1/2,[x,-10,10])schnell zeigt.

Auch der solve-Operator der Matlab Sym-bolic Toolbox b¨undelt Wissen ¨uber Algorith-men zum Auffinden der Nullstellen univaria-ter Polynome, von linearen und polynomialen Gleichungssystemen und allgemeineren Syste-men von Gleichungen und Ungleichungen.

Das Ergebnis wird als zweidimensionaler Array angeschrieben, hier mit einer Spalte. Im Gegen-satz zu anderen CAS sind inMatlabnicht ge-schachtelte Listen, sondern Arrays und Zellen die grundlegende Datenstruktur.

In diesem Beispiel istsoleine Zellstruktur aus zwei (4×1) Arrays, die man sich alssol.xund sol.y anzeigen lassen kann. Uns interessieren aber die L¨osungen selbst. In der letzten Zeile wird deshalb der symbolische Array [x, y] ge-nommen (ein (1×2)-Array) und in diesensol eingesetzt. Dabei wird sol zeilenweise traver-siert und die jeweilige Substitution ausgef¨uhrt.

Als Ergebnis erhalten wir hier die vier L¨ osun-gen als Zeilen einer Matrix und nicht wie oben als Liste von Substitutionslisten.

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen zur Vorlesung 21

Selbst f¨ur diese Gleichung gibtMatlabL¨ osun-gen in mathematisch korrekter Form zur¨uck, wenn die entsprechenden Optionen gesetzt wer-den.

In der Grundversion werden nur die beiden Hauptl¨osungen zur¨uckgegeben, aus denen sich alle anderen durch Hinzuf¨ugen einer Periode 2π gewinnen lassen.

Durch spezielle Zusatzparameter kann Mat-lab ¨uberredet werden, die komplette L¨osung zur¨uckgegeben, die aus drei Teilen besteht:

sol.x gibt die L¨osung mit einem Parameter kan,sol.parametersenth¨alt den Namen des Parameter und unter sol.conditions ist der Parameterbereich k ∈ Z f¨ur jeden der beiden Parameter gespeichert.

Hinter dieser etwas kryptischen Notation verbirgt sich die L¨osungsmenge nπ

In derMuPAD-Basisversion, auf dieMatlab dabei zur¨uckgreift, wurden diese L¨osungen in genau einer solchen Form angegeben. F¨ur sol-che Mengen ließen sich auch Vereinigungen und Durchschnitte berechnen, was in Matlab bei der Berechnung von L¨osungen in beschr¨ankten Intervallen ber¨ucksichtigt wird.

AuchMaples L¨osung f¨allt in der Grundversion dessolve-Operators unbefriedigend aus.

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

1 6π

Auch hier wird nach Setzen einer speziellen Systemvariablen das komplette Ergebnis be-rechnet, allerdings in einer recht verklausulier-ten Form ausgegeben: B1und Z1 sind Hilfs-variablen mit den Wertebereichen B1∈ {0,1}

(B wie boolean) und Z1∈Z.

Mathematica antwortete bis zur Version 8

¨

ahnlich, aber bis zur Version 5 gab es keine M¨oglichkeit, die L¨osungsschar in parametrisier-ter Form auszugeben. Im Handbuch der Version 3 (S. 794) wurde dies wie folgt begr¨undet:

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

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

nn x→ π

6 oo

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 zu generieren, der sich in solche Formen bringen l¨asst wie sie in der Mathematik zur Angabe von L¨osungsmengen verwendet werden.

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

Die Mathematica-Entwickler st¨utzen sich dabei auf eine andere Philosophie als die MuPAD -Entwickler. W¨ahrendMuPADkonsequent die MengennotationL={f(t)|t∈G∧H(t)} verwen-dete, mit der die L¨osungsmenge durch eine parameterabh¨angige Vorschrift f konstruiert wird, wobei f¨ur die Parametert∈Geine logische BedingungH(t) angegeben werden kann, die zus¨ atz-lich erf¨ullt sein muss, f¨uhrtMathematicadie gezielte Umformung dieser Eigenschaften selbst als logische Ausdr¨ucke aus.

SeitMathematica9 verwendetSolvedie neu eingef¨uhrte KonstruktionConditionalExpression zur Darstellung von L¨osungsmengen

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

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

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen zur Vorlesung 23

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π

Maximastreicht an dieser Stelle bereits komplett die Segel.

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

sin(x) =−2 cos(x)−1 2

Matlabin der Version 2020a antwortet syms x

w¨ahrendMaplefolgende Antwort liefert:

EnvAllSolutions:=true:

Hier wird eine zentrale Fragestellung deutlich, welche in der praktischen Arbeit mit einem CAS st¨andig auftritt:

Wie weit sind syntaktisch verschiedene Ausdr¨ucke sematisch ¨aquivalent, stellen also ein und denselben mathematischen Ausdruck dar?

In obigem Beispiel wurden die L¨osungen von den verschiedenen CAS in sehr unterschiedlichen Formen pr¨asentiert, die sich durch einfache (im Sinne von

”offensichtliche“) Umformungen weder ineinander noch in das von uns erwartete Ergebnis ¨uberf¨uhren lassen.

Versuchen wir wenigstens die n¨aherungsweise Auswertung einiger Elemente beider L¨ osungs-mengen, zun¨achst mitMatlab.

Wir sehen, dassMatlab in dieser Einstellung nicht merkt, dass die L¨osungen in Wirklichkeit reell sind.

Dies kann mit einer entsprechenden Option ein-gestellt werden, womit aber auch ein anderer L¨osungsalgorithmus verwendet wird, wie man am Ergebnis sieht.

Das Ganze ¨ahnelt dem Maple-Ergebnis arctan(α) mit α = 1− F¨uhren wir einen numerischen Vergleich der Ergebnisse der verschiedenen Systeme aus.

% Matlab vpa(sol)

(−0.4240310,1.994827366,−6.7072163,−4.28835794,5.8591542677,8.278012673)

# Maple

seq(op(subs( Z3=i,evalf(s))), i=-1..1);

−6.707216348,−4.288357941,−0.4240310395,1.994827367,5.859154268,8.278012675 (* Mathematica *)

Solve[Sin[x] + Cos[x] == 1/2 && -10 < x < 10 , x] // N

n {x→ −0.424031},{x→ −6.70722},{x→5.85915},{x→1.99483}, {x→ −4.28836},{x→8.27801} o

Die Ergebnisse gleichen sich, was es plausibel macht, dass es sich in der Tat um verschiedene syntak-tische Formen desselben mathemasyntak-tischen Inhalts handelt. Nat¨urlich sind solche n¨aherungsweisen

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen zur Vorlesung 25

Auswertungen keinBeweis der semantischen ¨Aquivalenz und verlassen außerdem den Bereich der exakten Rechnungen.

An dieser Stelle wird bereits deutlich, dass die Komplexit¨at eines CAS es oftmals notwendig macht, Ergebnisse in einem gegen¨uber dem Taschenrechnereinsatz vollkommen neuen Umfang nach- und umzuinterpretieren, um sie an die eigenen Erwartungen an deren Gestalt anzupassen.