• 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. Reduce verwendet 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 Termein (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 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 aus S als Polynome in xn mit Koeffizienten ausR[x1, . . . , xn1], 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

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 als rationale Normalform. Von ihr gelangt man zu einer kanonischen Form, indem man den gcd von Z¨ahler und Nenner ausdividiert und dann die beiden Teile des Bruches noch geeignet normiert, vgl. etwa [4].

Da die Berechnung des gcd aber im Vergleich zu den anderen arithmetischen Operationen aufw¨andiger sein kann, verzichtet z. B. Re-duce auf diese Berechnung, wenn nicht der Schaltergcdgesetzt 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.

Betrachten wir etwa die Vereinfachung, die Reduceautomatisch an einem trigonometri-schen Ausdruck vornimmt, und vergleichen ihn mit einem analogen polynomialen Aus-druck.

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

u1:=(sin(x)+cos(x))^3;

cos(x)3+ 3 cos(x)2sin(x)

+ 3 cos(x) sin(x)2+ sin(x)3 u2:=(a+b)^3;

a3+ 3a2b+ 3a b2+b3

lisp prettyprint prop ’u2; Ein ¨ahnliches Ergebnis liefert die Funktion

expand bei ”konservativeren“ Systemen wie z. B. MuPAD. Die interne Struktur als ra-tionaler Ausdruck kann hier mitrationalize bestimmt 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 wervorzunehmen-den. 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.

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.

MapleundMuPADinterpretieren den Ausdruck ¨ahnlich

{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.MuPAD4.0 fasst allerdings automa-tisch exp(m x)·exp(n x) f¨urm, n∈Zzu exp((m+n)x) zusammen.

v:=normal(u);

cos(x) + cos(x) sin(x)2−cos(x)3 e2x+ cos(x)5 ex+ cos(x)3+ cos(x) ex− cos(x) e2x−cos(x) e3x−cos(x)5 ex−cos(x) sin(x)2e2x−cos(x) sin(x)4ex+

cos(x) sin(x)4 ex−2 cos(x)3 sin(x)2 ex+ 2 cos(x)3 sin(x)2 ex

 x2 ex−2x2ex+x2e3x

Maplebel¨asst dabei den Nenner in faktorisierter Form, was aus algorithmischer Sicht vorteilhafter ist und die Normalformeigenschaft nicht zerst¨ort. normal(u1,expanded)expandiert wieexpand den Nenner, aber auch die verschiedenen exp-Kerne, was die Zahl der Kerne reduziert:

cos(x)( ex)3+ cos(x)(sin(x))4( ex)2+ (cos(x))5( ex)2+ 2 (cos(x))3(sin(x))2( ex)2−cos(x)(sin(x))2ex−(cos(x))3ex−cos(x)

−x2+x2( ex)2 Ersetzt man 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

Ein ¨ahnliches Ergebnis liefert MuPAD mit simplify(u)auch aus dem Originalausdruck, kann dabei aber die Kerne nicht alle eliminie-ren.

simplify(u);

cos(x) ex( ex−1)2( ex+ 1)3 x2( e2x−1)2

Maxima, Reduce und Mathematica wen-den sofort die Regel exp(n x) = exp(x)n f¨ur n∈ Zan 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.

rat(u1);

/R/

(ex)2 cos(x) sin4(x) +

2 (ex)2 cos3(x)−ex cos(x)

sin2(x) + (ex)2 cos5(x)− ex cos3(x) +

(ex)3−1 cos(x)

x2(ex)2−x2

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

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.