%htmlDTD; ]> Automatische Berechnung von Grenzwerten und Implementierung in Mathematica Zurück - Inhalt - Übersicht - Vorwärts

3 Mathematische Grundlagen

Nachdem wir nun eine grobe Vorstellung der Strategie des Algorithmus haben, wird es Zeit, einige Begriffe mathematisch präzise zu definieren: Wann wachsen zwei Funktionen gleich schnell, und wie kann schnelleres und langsameres Wachstum unterschieden werden? Wann ist das Wachstum eines Teilausdrucks dem Wachstum von ω ähnlich genug, um in der Potenzreihenentwicklung einen Beitrag zu leisten? Und wie können all diese Kriterien sinnvoll im Algorithmus geprüft werden?

Beginnen wir also mit dem Elementarsten. Dem Verhalten von Funktionen nahe Unendlich.

3.1 Hardykörper

Wir interessieren uns hauptsächlich für das Verhalten von Funktionen für x . Daher macht es Sinn, Funktionen als äquivalent zu betrachten, wenn sie sich in einem Intervall [ x 0, ) nicht unterscheiden. Diese Äquivalenzrelation führt direkt zur Definition des Hardykörpers:

Sei 𝒦 ein Körper von Funktionen [ x 0, ) ,x 0 , d.h. von Funktionen, die in einer Umgebung um Unendlich definiert sind.
Auf 𝒦 sei die Äquivalenzrelation definiert wie folgt: Für f ,g𝒦 gelte f g genau dann, wenn es ein x 0 gibt, so dass f (x)=g(x) für x >x 0 gilt. Damit bildet die Restklasse 𝒦 / mit den kanonischen Operatoren +, einen Körper. Diese Äquivalenzklasse f / wird auch als Keim (germ) der Funktion f bezeichnet. Alle Funktionen einer Äquivalenzklasse sind identisch im Verhalten nahe Unendlich, wohingegen sie sich in jedem endlichen Intervall, sei es auch noch so nahe an Unendlich, unterscheiden können. Ein gemeinsames Verhalten aller Funktionen in einem konkreten Intervall [ x 0, ) gibt es in der Regel nicht.

Ist eine Funktion f 𝒦 differenzierbar in einem Intervall [ x 0, ) , so ist jede Funktion der Äquivalenzklasse ebenfalls in einem geeigneten Intervall differenzierbar, und die Ableitungen sind zu einander äquivalent. So kann auf 𝒦 / eine kanonische Differentiation definiert werden.



Definition 3.1 : (Hardykörper) (vgl. [Har10])
Ein Körper 𝒦/ heißt Hardykörper, wenn er abgeschlossen ist bezüglich der Differentiation. 0 sei dabei die Menge {0} . Jede Funktion eines Hardykörpers ist damit stetig und beliebig oft differenzierbar in einer Umgebung um Unendlich.

Formal sei darauf hingewiesen: Im Folgenden wird oft von Funktionen f gesprochen, obwohl natürlich eine beliebige Funktion f der Klasse f gemeint ist. Insbesondere beziehen sich Aussagen über Intervalle [ x 0, ) auf unterschiedliche Intervalle, je nach gewähltem Vertreter der Klasse, und nicht auf ein gemeinsames Intervall der gesamten Klasse.

Ist ein Hardykörper und f 0 , so existiert wegen der Körpereigenschaft 1 /f und ist ebenfalls in einer Umgebung um Unendlich differenzierbar. Daher muss f (x)0 in einer ganzen Umgebung von Unendlich gelten.

Damit ist jede Funktion f in einer geeigneten Umgebung um Unendlich immer ganz positiv, ganz negativ oder identisch 0. Da das gleiche für f ' gilt, ist jede Funktion f 0 in einer Umgebung von Unendlich streng monoton, und für f gilt: lim x f(x) existiert und ist entweder eine reellwertige Konstante oder ± .

(x) , der Körper der rationalen Funktionen, ist ein Hardykörper, und bildet man den Abschluss bezüglich der Funktionen f exp(f) und f log|f| , so erhält man auch einen Hardykörper, genannt -Körper, der Körper der exp-log Funktionen. (vgl. [Har10])

3.2 Wachstumsklassen

Für die Analyse von Termausdrücken auf ihr Grenzwertverhalten benötigen wir einen Vergleichsmaßstab, um Funktionen nach ihrem Wachstumsverhalten zu ordnen. Im Folgenden werden gleich zwei Äquivalenzklasseneinteilungen eingeführt, um damit das Wachstum von Termen zu vergleichen. Die erste Klasseneinteilung wird dabei abgeschlossen bezüglich der Multiplikation mit Konstanten sein, die zweite wird abgeschlossen bezüglich der Potenzierung ihrer Funktionen sein und damit abgeschlossen bezüglich der Verkettung mit bestimmten rationalen Funktionen.



Definition 3.2 :
Für a ,b 0 gelte a b genau dann, wenn lim x a(x)/b(x){ 0 } ist. Für a 0 schreiben wir v (a) für die Äquivalenzklasse von a und Υ ={ v( a )|a 0 } für die Menge aller Äquivalenzklassen.



Theorem 3.3 : (vgl. [Ros83], Th.4 und [Gru96] Th.3.4)
Mit v (a)+v(b)=v(ab) bildet ( Υ,+) eine Abelsche Gruppe, die mittels
v (a)>v(b):lim x a(x)/b(x)=0
vollständig geordnet ist. Außerdem gilt für a ,b 0 :
  1. v (1)=0 .
  2. v (a - 1)=-v(a) .
  3. v (a n)=nv(a),n (mit der Multiplikation auf Υ definiert als Summierung).
  4. v (a)>0 genau dann, wenn lim x a(x)=0 .
  5. v (a)=0 genau dann, wenn lim x a(x){0} .
  6. v (a)<0 genau dann, wenn lim x a(x)=± .
  7. Wenn a +b 0 ist, dann gilt v (a+b)min(v(a),v(b)) .
  8. Wenn a +b 0 und v (a)v(b) ist, dann gilt v (a+b)=min(v(a),v(b)) .
  9. Wenn a +b 0 und v (a+b)>min(v(a),v(b)) ist, gilt lim x a(x)/b(x)=-1 (und damit v (a)=v(b) ).
  10. Wenn v (a)0v(b) , dann v (a)v(b) genau dann, wenn v (a')v(b') .
  11. Wenn v (b)0 , dann v (a)>v(b) genau dann, wenn v (a')>v(b') .
  12. Wenn v (a)0v(b) , dann v (a)=v(b) genau dann, wenn v (a')=v(b') .

(1)-(9) folgen leicht aus der Definition. (10)-(12) folgen aus dem Satz von de l'Hôpital.

(7), (8) und (9) kann auf ganz ausgedehnt werden mit der Definition v (0)=+ .

Beachte: v (x 2)<v(x)<v(1) , was der intuitiven Bedeutung von 'kleiner' nicht entspricht. (7) bedeutet umgangssprachlich also: a+b wächst langsamer oder gleich schnell, als die schneller wachsende der beiden Funktionen, a oder b. (8) beschreibt die Dominanz des stärkeren Wachstums, und (9) den Fall, dass sich das Wachstum von a und b gegenseitig aufhebt.

Zum Abschluss noch ein paar Beispiele für Wachstumsklassen und deren Anordnung:
v ( 1/x )>v( 1 )>v( lnx )>v( (lnx) 10 )>v( x 0 .1 )>v( x ) > v( xlnx )>v( x(lnx) 10 )>v( x 1 .1 )>v( x 10 )>v( e 0 .1x )>v( e x )>v( e 10 x )
Man sieht an diesen Beispielen bereits, dass die Funktionen x ,e x,lnx eigene kleine Gruppen bilden, die sich auch durch das Potenzieren mit beliebigen positiven Zahlen nicht überschneiden. Gemischte Terme wie x (lnx) k können diese Gruppe unterbrechen und bilden darin gleich wieder eine eigene Gruppe.

Diese Einteilung in Wachstumsklassen ist noch ungeeignet, um das Wachstum von Termen jenseits von Unendlich ausreichend einschätzen zu können. Versuchen wir also, das Gruppenverhalten, das x n von e x trennt, durch einen weiteren Wachstumsbegriff zu erfassen.

3.3 Noch einmal Wachstumsklassen

Wir kommen zur zweiten Äquivalenzklasse. Ziel ist, die Äquivalenzklasse abgeschlossen bezüglich rationaler Operationen zu gestalten. Ist f 0 , und g (x)= k =1 n a kx k(a n0) , so ergibt sich v (g(f))=nv(f) . Das Potenzieren vervielfacht also die Wachstumsklasse, und damit kann kein Vielfaches von v (x) jemals v (e x) erreichen. Deswegen zielt die nächste Definition darauf, Funktionen, die sich in der ersten Wachstumsklasse durch endliche Vielfache unterscheiden, zusammen zu fassen. Darüber hinaus ist es sinnvoll, das Wachstum von f und 1 /f ebenfalls zu einer Klasse zusammen zu fassen.



Definition 3.4 :
Zwei Funktionen f ,g 0 sind in der gleichen Wachstumsklasse, geschrieben f g , genau dann, wenn m ,n existieren mit m |v(f)||v(g)| und n |v(g)||v(f)| . Wir schreiben γ (f) für die Äquivalenzklasse von f.
Außerdem gelte f g:γ(f)>γ(g) genau dann, wenn n |v(g)|<|v(f)| für alle n gilt.



Theorem 3.5 :
Für f ,g 0 gilt:
  1. f gn:n|v(f)||v(g)| .
  2. v (f)=v(g)γ(f)=γ(g) .
  3. γ (f n)=γ(f) für alle n { 0 } .
  4. γ (f)=γ(1)v(f)=0 .
  5. γ (1)γ(f) für alle f 0 .
  6. Für f ,g+ gilt f g genau dann, wenn v (f m/g)0 und v (g n/f)0 ist.
  7. γ (fg)max{ γ(f),γ(g) } .
  8. Für γ (f)γ(g) gilt: γ (fg)=max{ γ(f),γ(g) } .

(1) - (5) folgen fast unmittelbar aus der Definition.
Zu (6): Es gilt v (f)<0,v(g)<0 . Damit ist v (f m/g)=-m|v(f)|+|v(g)|0 genau dann, wenn m |v(f)||v(g)| gilt.

Zu (7): Sei o.B.d.A. γ (f)γ(g) . Dann gibt es nach (1) ein n mit n |v(f)||v(g)| . Damit folgt: | v(fg)|=|v(f)+v(g)||v(f)|+|v(g)|(n+1)|v(f)| , und daraus folgt γ (f)γ(fg) .

(8) beweist man am einfachsten unter Zuhilfenahme von Lemma 3.8 weiter unten.



Definition 3.6 :(Wachstumsverhältnis)
Sei f ,g 0 , v (f)0v(g) . Dann heißt der Wert
R (f,g):=lim x +ln |f(x)|ln |g(x)|
die Wachstumsverhältnis von f und g.

Dieser Wert eignet sich sehr gut, um das Wachstumsverhalten zweier Funktionen zu vergleichen, wie wir im folgenden Theorem sehen werden. Gleichzeitig ist die Funktion einfach genug zu berechnen, und damit sehr gut für Computeralgebrazwecke zu verwenden.

Theorem 3.7 : (vgl. [Gru96] Th. 3.5 und Lem. 3.6)
Sei f ,g 0 , v (f)0v(g) . Dann gilt:
f g R(f,g){0} f g R(f,g)=0 f g R(f,g)=±

Wegen der Bedeutung dieses Zusammenhangs hier der Beweis:

Zunächst kann man o.B.d.A davon ausgehen, dass f 0,g0 gilt, da alle Aussagen vorzeichenunabhängig sind. Weiterhin kann man von f ,g+ und damit von v (f)<0,v(g)<0 ausgehen: Falls f 0 oder g 0 , kann der Beweis mit 1 /f oder 1 /g geführt werden.
Dann gilt folgende Äquivalenz:

m v(f)<v(g) v(f m/g)<0 limf m/g=+ lime m lnf -lng =+ limmlnf -lng =+ limln(g)( mln f ln g -1 )=+  
Analog folgt n v(g)<v(f)limln(f)( nln g ln f -1 )=+ .

Gibt es nun m,n mit m |v(f)||v(g)| und n |v(g)||v(f)| , so kann im Gleichheitsfalle einfach m oder n erhöht werden, und die Aussage gilt damit auch für '>'. Da v (f)<0,v(g)<0 ist, kann die Betragsbildung ersetzt werden, und es gilt m v(f)<v(g) und n v(g)<v(f) und damit, wie oben gezeigt, lim ln(g)( mln f ln g -1 )=+ und lim ln(f)( nln g ln f -1 )=+ . Da bereits ln f ,lng + gilt, muss lim mln f ln g 1 und lim nln g ln f 1 gelten. Das ist aber nur möglich, wenn lim ln f ln g weder 0 noch ± ist.

Gilt umgekehrt lim ln f(x)ln g(x) +{0} , so gilt für hinreichend großes m,n lim mln f ln g >1 und lim nln g ln f >1 , und der obige Rechenweg lässt sich umkehren.

Für f g ergibt sich analog lim ln(g)( nln f ln g -1 )=- für alle n . Dazu muss n ln f ln g -1<0 für alle n gelten, beziehungsweise lim ln f ln g <1 n . Das ist aber nur für lim ln f ln g =0 erfüllt.

Die Funktion R (f,g) ist in doppelter Hinsicht sehr interessant. Zum einen bietet sie ein einfaches Kriterium, um das Wachstum von Funktionen zu vergleichen, ohne dabei auf die Existenz oder Nichtexistenz von Abschätzungskonstanten angewiesen zu sein.

Zum anderen stellt der Wert von R (f,g) eine Ordnungsbeziehung innerhalb einer Wachstumsklasse dar. Da für f ,g,h 0 mit f gh die Beziehung R (f,h)=R(f,g)R(g,h) gilt, kann man durch Auswahl eines Repräsentanten f 0 jeder Funktion f γ(f 0) die Zahl R (f,f 0) zuordnen und so alle Funktionen von γ (f 0) anordnen.

Unter Zuhilfenahme von Theorem 3.3 (10) und (11) kann die Aussage von Theorem 3.7 auch elegant zusammengefasst werden:



Lemma 3.8 :
Sei f ,g 0 , v (f)0v(g) . Dann gilt:
f g v(f'/f)=v(g'/g) f g v(f'/f)>v(g'/g)

Diese Aussage ist inhaltlich vergleichbar mit
Theorem 3.7, bietet aber bessere Möglichkeiten für mathematische Beweise durch die Einbeziehung der Ableitung.

Beweis: Benutze den Zusammenhang ( log|f|)'=f'/f zusammen mit Theorem 3.3 (10) und (11).

Abschließend noch die formale Einschätzung der Wirkung der Exponential- und Logarithmusfunktion in unserem Wachstumsmodell:



Lemma 3.9 :
Sei f 0 , v (f)0 , dann gilt:
  1. γ ( log|f| )<γ(f)
  2. γ (f)<γ( e f ) , wenn f ± .
  3. γ (f)>γ( e f ) , wenn f 0 .

Alle drei Aussagen folgen durch direkte Anwendung von Lemma 3.8 und der Erkenntnisse v (log|f|)<0 im Falle von (1) und v (f)<0 bzw. > 0 im Falle von (2) und (3).

Verglichen mit den Beispielen des vorigen Kapitels ergibt sich dieses Bild:
1 /x1lnx(lnx) 10 x 0 .1x xlnxx(lnx) 10 x 1 .1x 10 e 0 .1xe xe 10 x
Betrachten wir noch ein paar Beispiele aus der Welt jenseits von e x :
x x+e - xe - xe xx+e xe x +e - xe x lnxe x 2 e x +e x
Interessant anzumerken ist, dass x +e - xx+e x gilt, anderseits aber e - x e x . Diese Klassenbildung ist also nicht verträglich mit der Addition.

3.4 Termanalyse

Während wir bisher von Funktionen im mathematischen Sinne ausgegangen sind, betrachten wir nun Funktionen, wie sie von Computeralgebrasystemen gesehen werden: Als rekursive Baumstruktur mit Zahlen, Konstanten und Variablen als Blätter und Operationen als innere Knoten.

Der Algorithmus sieht vor, die am stärksten wachsenden Teilausdrücke durch ω darzustellen. Welche das sind, wird im Folgenden festgelegt. Vorher bezeichnen wir noch mit SubExp (f) die Menge aller Teilausdrücke von f, inklusive f selbst. Damit ergibt sich zum Beispiel:
SubExp ( 5x 2+7 )={ 5x 2+7,5x 2,5,x 2,x,2,7 }
Nun kann die Menge der am stärksten wachsenden Teilausdrücke (Most Rapidly Varying, MRV) definiert werden:



Definition 3.10 :(MrvSet)
Sei f (x) eine Funktion in Form einer Baumstruktur. Dann ist MrvSet (f) wie folgt definiert:
MrvSet (f):={ gSubExp(f)hSubExp(f):hg }

Wie man an der Definition leicht sieht, sind alle Elemente von MrvSet (f) in der gleichen Wachstumsklasse, und kein anderer Teilausdruck von f besitzt ein stärkeres Wachstum.

Da alle Elemente von MrvSet (f) in der gleiche Wachstumsklasse liegen, macht es Sinn, solche Mengen und andere Funktionen direkt mit ,, zu vergleichen. Es reicht dabei vollkommen, den Vergleich mit einem Vertreter der Menge durchzuführen.

Als nützlich erweist sich auch eine Hilfsfunktion zur Vereinigung solcher Mengen:
MrvMax (A,B)=A , wenn AB, MrvMax (A,B)=B , wenn AB, MrvMax (A,B)=AB , wenn AB


Damit ist der Weg frei für eine konstruktivere Analyse des Wachstums einer Funktion:



Lemma 3.11 :
Ist f eine exp-log Funktion in Baumstruktur, dann gilt:
  1. Wenn x SubExp(f) ist, dann ist MrvSet (f)=SubExp(f) .
  2. Wenn f =x ist, dann ist MrvSet (f)={x} .
  3. Wenn f =gh ist, dann ist MrvMax (MrvSet(g),MrvSet(h))MrvSet(f) .
  4. Wenn f =g+h ist, dann ist MrvMax (MrvSet(g),MrvSet(h))MrvSet(f) .
  5. Wenn f =g c(c) ist, dann ist MrvSet (g)MrvSet(f) .
  6. Wenn f =logg ist, dann ist MrvSet (f)=MrvSet(g) .
  7. Wenn f =e g und g ± ist, dann ist MrvSet (f)=MrvMax({e g},MrvSet(g)) .
  8. Wenn f =e g und g c ist, dann ist MrvSet (g)MrvSet(f) .

In (1) haben alle Teilausdrücke das minimale Wachstum γ (1) . (2) ist offensichtlich.
Bei (3)-(8) ist die Frage entscheidend, ob die jeweilige Operation ein stärkeres Wachstum erzeugen kann, als es die Teilausdrücke einzeln können.
(3) ergibt sich aus Theorem 3.5 (7). (4) erweist sich als schwieriger: So haben im Fall ( -x+e - x)+x beide Teile der Summe das Wachstum γ (x) , die Summe jedoch durch Elimination das Wachstum γ (e x) . Trotzdem muss das stärkste Wachstum durch einen Teilausdruck von g oder h erzeugt worden sein. (5) folgt aus Theorem 3.5 (3). (6)-(8) folgen im Wesentlichen direkt aus Lemma 3.9, jedoch muss hier zusätzlich bedacht werden, dass g auch in γ (1) liegen kann, wodurch auch der Gesamtausdruck in γ (1) liegt.

In allen obigen Fällen bedeutet außerdem effektiv, dass höchstens noch der Gesamtausdruck f selbst zusätzlich in der Menge liegen kann. Bei der späteren Umsetzung im Algorithmus kann in diesen Fällen der Gesamtausdruck f ausgelassen werden.

3.5 Ersetzung

Ein wichtiges Thema wurde noch nicht ausreichend betrachtet: Die Ersetzung eines Terms der höchsten Wachstumsklasse durch einen Term, der das Wachstum in der Variablen ω isoliert. Angenommen, ein Term f soll durch einen Term g mit f g dargestellt werden. Wie bereits in
Kapitel 2.3 dargelegt, wird das Wachstum von Termen künstlich bis auf exponentielles Wachstum angehoben werden. Wie die Implementierung zeigen wird, kann sogar davon ausgegangen werden, dass f =e s und g =e t ist. Als Ansatz versuchen wir f darzustellen als f =Ag c , wobei c konstant und weder 0 noch ∞ sein soll, und A kleineres Wachstum als f und g haben sollte: A g .

Instinktiv scheint es eine gute Idee zu sein, c so zu wählen, dass v (f)=v(g c) ist - wenn dies denn möglich ist. A ergibt sich dann automatisch als A =f/g c=e s -ct .

Wollen wir A g erzwingen, können wir Theorem 3.7 zu Hilfe nehmen:
A g lim x +ln |A|ln |g|=0   lim x +s -ctt =0   lim x +s/t-c=0   c=lim x +s/t
c erweist sich dabei als das bereits bekannte Wachstumsverhältnis: c =R(f,g) . Damit ist auch gleich die Existenz von c gesichert, dank Theorem 3.7 angewendet auf f g .
Zurück - Inhalt - Übersicht - Vorwärts