• Keine Ergebnisse gefunden

Simplifikation polynomialer und rationaler Ausdr¨ ucke

Wir hatten bei der Betrachtung der F¨ahigkeiten eines CAS bereits gesehen, dass sie besonders gut in der Lage sind, polynomiale und rationale Ausdr¨ucke zu vereinfachen. Der Grund daf¨ur ist die Tatsache, dass in der Menge dieser Ausdr¨ucke kanonische bzw. normale Formen existieren.

Polynome in distributiver Darstellung

Betrachten wir dazu den Polynomring S := R[x1, . . . , xn] in den Variablen X = (x1, . . . , xn)

¨

uber dem Grundring R. Wir hatten gesehen, dass solche Polynomef ∈S in expandierter Form als Summe von Monomen f = P

acaXa dargestellt werden, wobei a = (a1, . . . , an) ∈ Nn ein Multiindex ist und Xa kurz f¨ur xa11· · ·xann steht. Eine solche Darstellung kann in den meisten CAS durch die Funktion expand erzeugt werden.Reduceverwendet sie standardm¨aßig f¨ur die Darstellung von Polynomen.

Diese Darstellung ist eindeutig, d. h. eine kanonische Form f¨ur Polynomef ∈S, wenn f¨ur die Ko-effizienten, also die Elemente ausR, eine solche kanonische Form existiert und die Reihenfolge der Summanden festgelegt ist. Zur Festlegung der Reihenfolge definiert man gew¨ohnlich eine Ordnung aufT(X) ={Xa : a∈Nn}, demMonoid der Terme in (x1, . . . , xn).

Alsdistributive Darstellungeines Polynomsf ∈Sbzgl. einer solchen Ordnung bezeichnet man eine Darstellung f =P

acaXa, in welcher die Summanden paarweise verschiedene Terme enthalten, diese in fallender Reihenfolge angeordnet sind und die einzelnen Koeffizienten in ihre kanonische

4urt= 0 ergibt sich insbesondereS(0) = 0.

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen vom 16. Juli 2012 90

Form gebracht wurden. In dieser Darstellung ist die Addition von Polynomen besonders effizient ausf¨uhrbar. Ist die gew¨ahlte Ordnung dar¨uber hinausmonoton, d. h. gilt

s < t⇒s·u < t·u f¨ur alles, t, u∈T(X),

so kann man auch die Multiplikation recht effektiv ausf¨uhren, da dann beim gliedweisen Multiplizie-ren einer geordneten Summe mit einem Monom die Summanden geordnet bleiben. Wohlfundierte Ordnungen mit dieser Zusatzeigenschaft bezeichnet man alsTermordnungen.

Zusammenfassend k¨onnen wir folgenden Satz formulieren:

Satz 2 Existiert aufReine kanonische Form, dann ist die distributive Darstellung von Polynomen f ∈S mit Koeffizienten in kanonischer Form eine kanonische Form aufS.

HatR einen starken Nulltester, so auchS.

Der Beweis ist offensichtlich. Damit kann in Polynomringen ¨uber g¨angigen Grundbereichen wie den ganzen oder rationalen Zahlen, f¨ur die kanonische Formen existieren, effektiv gerechnet werden.

Polynome in rekursiver Darstellung

Alsrekursive Darstellung bezeichnet man die Darstellung von Polynomen ausS als Polynome in xn mit Koeffizienten ausR[x1, . . . , xn−1], wobei die Summanden nach fallenden Potenzen vonxn angeordnet und die Koeffizienten rekursiv nach demselben Prinzip dargestellt sind. Da die rekur-sive Darstellung f¨ur n = 1 mit der distributiven Darstellung zusammenf¨allt, f¨uhrt die rekursive Natur des bewiesenen Satzes unmittelbar zu folgendem

Folgerung 1 Existiert aufReine kanonische Form, dann ist auch die rekursive Darstellung von Polynomen f ∈R[x] mit Koeffizienten in kanonischer Form eine kanonische Form aufR[x].

HatR einen starken Nulltester, so auchR[x].

Die rekursive Darstellung des in distributiver kanonischer Form gegebenen Polynoms f := 2x3y2+ 3x2y2+ 5x2y−x y2−3x y+x−y−2

als Element vonR[y][x] ist

(2y2)x3+ (3y2+ 5y)x2+ (−y2−3y+ 1)x+ (−y−2)

Im Gegensatz dazu f¨uhrt diefaktorisierte Darstellung von Polynomen nicht zu einer kano-nischen Form, da eine Faktorzerlegung inR[x1, . . . , xn] immer nur eindeutig bis auf Einheiten aus Rbestimmt werden kann. Auch f¨ur die Polynomoperationen ist diese Darstellung eher ungeeignet.

Rationale Funktionen

Wir hatten bereits mehrfach gesehen, dass CAS hervorragend in der Lage sind, auch rationale Funktionen zu vereinfachen. Allerdings ist es in einigen Beispielen besser, die spezielle Simplifika-tionsstrategienormal zu verwenden als den allgemeinen Ansatzsimplify, wie folgendes Beispiel (MuPAD) demonstriert:

u:= a^3/((a-b)*(a-c)) + b^3/((b-c)*(b-a)) + c^3/((c-a)*(c-b));

a3

(a−b) (a−c)+ b3

(b−a) (b−c)+ c3 (c−a) (c−b) simplify(u);

a3

−ab−ac+bc+a2 − b3

ab−ac+bc−b2 + c3 ab−ac−bc+c2 normal(u);

a+b+c

normalverf¨ahrt nach folgendem einfachen Schema: Es bestimmt einen gemeinsamen Hauptnenner und ¨uberf¨uhrt dann das entstehende Z¨ahlerpolynom in seine distributive Form. Auf diese Weise entsteht zwar keine kanonische Form wie im Fall der Polynome, da ja Z¨ahler und Nenner nicht unbedingt teilerfremd sein m¨ussen, allerdings eine Normalform, denn auf diese Weise werden Null-Ausdr¨ucke sicher erkannt. Es gilt damit folgender

Satz 3 Existiert auf R eine Normalform, dann liefert die beschriebene Normalisierungsstrategie eine Normalform auf dem RingR(x1, . . . , xn)der rationalen Funktionen ¨uber R.

Hat R also einen starken Nulltester, so auch der RingR(x1, . . . , xn) der rationalen Funktionen

¨ uber R.

Eine solche Darstellung bezeichnet man des-halb auch alsrationale Normalform. Von ihr gelangt man zu einer kanonischen Form, indem man den gcd von Z¨ahler und Nenner ausdivi-diert und dann die beiden Teile des Bruches noch geeignet normiert, vgl. etwa [1]. Da die Berechnung des gcd aber im Vergleich zu den anderen arithmetischen Operationen aufw¨ andi-ger sein kann, verzichtet z. B.Reduceauf diese Berechnung, wenn nicht der Schalter gcd ge-setzt ist.

(x^5-1)/(x^3-1);

x5−1 x3−1 on gcd; ws;

x4+x3+x2+x+ 1 x2+x+ 1

Die meisten CAS wandeln Eingaben nicht automatisch in eine rationale Normalform um, sondern nur auf spezielle Anforderung hin (wobei dann auch der gcd von Z¨ahler und Nenner ausgeteilt wird) oder im Zuge von Funktionsaufrufen wiefactor. InReduce(immer) oderMaximak¨onnen Teile des Ergebnisses in dieser

”compilierten“ Form vorliegen, was bei der Suche nach Mustern im Rahmen des regelbasierten Transformationszugangs zu ber¨ucksichtigen ist. Maximazeigt durch eine Marke/R/an, wenn ein Ausdruck oder Teile davon in dieser rationalen Normalform vorliegen.

Rationale Normalformen sind auf der Basis der distributiven Darstellung von Polynomen (Maple, MuPAD,Mathematica) oder aber der rekursiven Darstellung (Reduce, Maxima) m¨oglich.

Maxima ratsimp(f) Maple normal(f) Mathematica Together[f]

MuPAD normal(f) Reduce standardm¨aßig Tabelle 3: Rationale Normalform bilden

Verallgemeinerte Kerne

Auf Grund der guten Eigenschaften, welche die beschriebenen Simplifikationsverfahren polyno-mialer und rationaler Ausdr¨ucke besitzen, werden sie auch auf Ausdr¨ucke angewendet, die nur teilweise eine solche Struktur besitzen.

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen vom 16. Juli 2012 92

Betrachten wir etwa die Vereinfachung, die Re-duceautomatisch an einem trigonometrischen Ausdruck vornimmt, und vergleichen ihn mit einem analogen polynomialen Ausdruck.

Die innere Struktur beider Ausdr¨ucke ist ¨ ahn-lich, einzig statt der Variablen aund b stehen verallgemeinerte Variablen (sin x) und (cos x) (die Lisp-Notation von sin(x) und cos(x)).

u1:=(sin(x)+cos(x))^3; Ein ¨ahnliches Ergebnis liefert die Funktion

expand bei

”konservativeren“ Systemen wie z. B. MuPAD. Die interne Struktur als ratio-naler Ausdruck kann hier mitrationalize be-stimmt werden.

u:=expand((sin(x)+cos(x))^3);

rationalize(u);

D33+D43+ 3D3D42+ 3D32D4, {D3 = cos(x), D4 = sin(x)}

In beiden F¨allen entstehen polynomiale Ausdr¨ucke, aber nicht in (freien) Variablen, sondern in allgemeineren Ausdr¨ucken, wie in diesem Fall sin(x)undcos(x), welche f¨ur die vorzunehmen-de Normalform-Expansion als algebraisch unabh¨angig angenommen werden. Die zwischen ihnen bestehende algebraische Relation sin(x)2+ cos(x)2 = 1 muss ggf. durch andere Simplifikations-mechanismen zur Wirkung gebracht werden. Solche allgemeineren Ausdr¨ucke werden als Kerne bezeichnet.

InMaximakann man statt mitratsimp Aus-dr¨ucke mit solchen Kernen auch mit der Funk-tion rat in deren rationale Normalform um-wandeln. Dabei merkt sich das System, dass es sich um eine rationale Normalform handelt. Die Marke /R/ in der Ausgabe weist darauf hin.

u:(sin(x)+cos(x)^3)$ CAS stellen allgemeine Ausdr¨ucke dar als rationale Ausdr¨ucke in verallgemeinerten Varia-blen, die als Kerne bezeichnet werden. Ein solcher Kern kann dabei ein Symbol oder ein Ausdruck mit einem nicht-arithmetischen Funktionssymbol als Kopf sein.

Maxima showratvars(f) Maple indets(f) Mathematica Variables[f]

MuPAD indets(f,RatExpr) Reduce prop ’f;

Tabelle 4: Kerne eines Ausdrucks bestimmen

Hier noch ein etwas komplizierteres Beispiel, das von den verschiedenen CAS auf unterschiedliche Weise

”compiliert“ wird.

u:=(exp(x)*cos(x)+cos(x)*sin(x)^4+2*cos(x)^3*sin(x)^2+cos(x)^5)/

(x^2-x^2*exp(-2*x))-(exp(-x)*cos(x)+cos(x)*sin(x)^2+cos(x)^3)/

(x^2*exp(x)-x^2*exp(-x));

cos(x) sin(x)4+ 2 cos(x)3 sin(x)2+ cos(x)5+ excos(x)

x2−x2 e−2x −cos(x) sin(x)2+ cos(x)3+ e−xcos(x) x2 ex−x2 e−x

MapleundMuPADinterpretieren den Ausdruck ¨ahnlich indets(u); // Maple

{x,cos(x),sin(x),exp(x),exp(−x),exp(−2x)}

rationalize(u); // MuPAD

D8D9 +D95+D9D104+ 2D93D102

x2−x2D7 −D6D9 +D93+D9D102 x2D8−x2D6

{D9 = cos(x), D8 = exp(x), D10 = sin(x), D6 = exp(−x), D7 = exp(−2x)}

Die Wirkung vonnormalfolgt der beobachteten Zerlegung. Insbesondere werden die Terme exp(x), exp(−x) und exp(−2x) als eigenst¨andige Kerne behandelt.MuPADfasst allerdings ab Version 4 exp(m x)·exp(n x) f¨ur m, n∈Zzu exp((m+n)x) automatisch zusammen.

v:=normal(u);

e3xcos(x)−cos(x)−excos(x)3+ e2xcos(x)5+ 2 e2xcos(x)3sin(x)2−excos(x) sin(x)2+ e2xcos(x) sin(x)4

x2 e2x−x2

Ersetzt man in zus¨atzlich sin(x)2 durch 1 − cos(x)2, so ergibt sich eine besonders einfache Form des Ausdrucks.

simplify(v);

excos(x) + cos(x) x2

Maplebel¨asst bei der Berechnung vonnormal(u)den Nenner in faktorisierter Form x2 e−2x−1

ex−e−x ,

was die Normalformeigenschaft nicht zerst¨ort, aber die ¨Ahnlichkeit der beiden Faktoren e−2x−1 und ex−e−x nicht erkennt und damit zu einem komplizierteren Ausdruck f¨uhrt alsMuPAD. v1:=normal(u,expanded) expandiert zus¨atzlich den Nenner, fasst aber auch die verschiedenen exp-Kerne zusammen, was die Zahl der Kerne reduziert und auf dasselbe Ergebnis wieMuPAD f¨uhrt.simplify(u)kann deshalb die Kerne nicht alle eliminieren, sondern erstsimplify(v1).

Maxima, Reduce und Mathematica wen-den sofort die Regel exp(n x) = exp(x)n f¨ur n ∈ Z an und reduzieren auf diese Weise die Zahl der Kerne.

showratvars(u1);

[x, ex,cos(x),sin(x)]

Hier das Ergebnis der Berechnung der rationalen Normalform mitMaxima. An der Darstellung ist zu erkennen, dass intern eine rekursive Polynomdarstellung verwendet wird.

H.-G. Gr¨abe: Einf¨uhrung in das symbolische Rechnen, Notizen vom 16. Juli 2012 94

ratsimp(u1);

e2xcos(x) sin4(x) + 2e2xcos3(x)−ex cos(x)

sin2(x) + e2x cos5(x)−excos3(x) + e3x−1

cos(x)

x2e2x−x2

Mathematica behauptet zwar, dass exp(x) nicht mit zu den Kernen dieses Ausdrucks geh¨ort, aber die Wirkung vonTogether zeigt, dass das nicht stimmt.

Variables[u]

{x, Cos[x], Sin[x]}

Together[u]

cos(x)

−1 + e3x− excos(x)2+ e2xcos(x)4−exsin(x)2+ 2 e2xcos(x)2sin(x)2+ e2xsin(x)4 (−1 + e2x)x2

Eine eigenst¨andige, im Systemkern verankerte Simplifikationsschicht f¨ur polynomiale und rationale Ausdr¨ucke in solchen Kernen spielt eine wichtige Rolle im Simplifikationsdesign aller CAS. Sowohl die Herstellung rationaler Normalformen und anschließende Anwendung weitergehender Vereinfachungen wie in obigem Beispiel als auch die gezielte Umformung an-derer funktionaler Abh¨angigkeiten in rationale wie etwa beim Expandieren trigonometrischer Ausdr¨ucke werden angewendet.