26.02.2013 Aufrufe

Algorithmisches Differenzieren - M1

Algorithmisches Differenzieren - M1

Algorithmisches Differenzieren - M1

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Technische Universität München<br />

Fakultät für Mathematik<br />

Herbert Fischer<br />

<strong>Algorithmisches</strong> <strong>Differenzieren</strong><br />

Skriptum zur Vorlesung WS 2005/06


<strong>Algorithmisches</strong> <strong>Differenzieren</strong><br />

Herbert Fischer<br />

1 Einleitung<br />

Wir wollen für eine Funktion f die Ableitung f ′ an einer gegebenen Stelle berechnen.<br />

Nehmen wir zum Beispiel die Funktion f : IR → IR mit f(x) = (x 3 + x) 2 und fragen<br />

nach f ′ (7). Gemäß der Definition der Ableitung erhalten wir den Wert<br />

f ′ ((7 + h)<br />

(7) = lim<br />

h→0<br />

3 + (7 + h)) 2 − (73 + 7) 2<br />

h<br />

= 103600.<br />

Üblicher ist es, mit den bekannten Regeln der Differentialrechnung eine Formel<br />

f ′ (x) = 2(x 3 + x)(3x 2 + 1)<br />

zu erzeugen, mit der wir dann f ′ (7) = 103600 berechnen. Beide Wege sind nur in<br />

einfachen Fällen brauchbar. Ist die Funktion f etwa durch ein Programm mit 5000<br />

Anweisungen gegeben, so sind andere Wege zu suchen.<br />

Die Regeln zum <strong>Differenzieren</strong> ermöglichen es, die Berechnung von Ableitungen<br />

zu automatisieren. Das Prinzip ist einfach: Die gegebene Funktion f wird in Teile<br />

zerlegt, für die Teile werden Ableitungen gebildet, sodann werden die Ableitungen der<br />

Teile zusammengesetzt und ergeben f ′ (x). Dieses mehr oder weniger automatische<br />

<strong>Differenzieren</strong> wollen wir schematisch so darstellen.<br />

103600<br />

✛<br />

auto. Diff.<br />

✛<br />

✛<br />

(x 3 + x) 2<br />

In vielen Bereichen der Angewandten Mathematik treten Ableitungen auf: beim iterativen<br />

Lösen von nichtlinearen Gleichungen, in der nichtlinearen Optimierung, bei der<br />

Behandlung von Differentialgleichungen, bei der Steuerung von Robotern, in der Sensitivitätsanalyse,<br />

bei fast allen kontinuierlichen physikalischen Problemen. Während<br />

innerhalb der Reinen Mathematik die Behandlung von Ableitungen, also die Differentialrechnung,<br />

seit langem ein abgeschlossenes Gebiet ist, wird in der numerischen<br />

Praxis bezüglich der Ableitungen meist der Stand vor Leibniz beibehalten: Für eine<br />

gegebene Funktion f wird die Ableitung f ′ an gegebener Stelle x angenähert durch<br />

einen Differenzen-Quotienten<br />

f ′ (x) ≈<br />

f(y) − f(x)<br />

.<br />

y − x<br />

7


1 EINLEITUNG 2<br />

Es ist klar, daß in gewissen Fällen der Differenzen-Quotient die einzige Möglichkeit<br />

ist, Informationen über die Ableitung zu erhalten, z.B. wenn f(x) das Ergebnis eines<br />

Experimentes ist. In vielen Fällen jedoch ist die zu betrachtende Funktion explizit<br />

gegeben, etwa durch einen Algorithmus, oder formelmäßig implizit bestimmt, etwa<br />

durch eine definierende Gleichung. Nun sind Regeln zum <strong>Differenzieren</strong> bekannt und<br />

einfach. Es liegt also durchaus nahe, die schrittweise Anwendung dieser Regeln und<br />

damit die Berechnung von Ableitungen nicht dem Benutzer aufzubürden, sondern<br />

von einem Algorithmus durchführen zu lassen. Für praktische Anwendungen braucht<br />

man nicht Formeln für Ableitungen, es reicht, wenn die Werte von Ableitungen an<br />

vorgegebenen Stellen berechnet werden können. Die systematische Erzeugung von Algorithmen,<br />

die Ableitungswerte berechnen, und die Verwendung dieser Algorithmen<br />

nennt man <strong>Algorithmisches</strong> <strong>Differenzieren</strong>.<br />

Betrachten wir eine differenzierbare Funktion f : D ⊆ IR n → IR. Sei A ein Algorithmus,<br />

der zu gegebenem x ∈ D den Funktionswert f(x) berechnet.<br />

f(x)<br />

✛<br />

A<br />

Wir sind interessiert an einem transformierten Algorithmus A ′ , der zu gegebenem x ∈<br />

D den Funktionswert und den Ableitungswert f ′ (x) berechnet.<br />

f(x), f ′ (x)<br />

✛<br />

✛<br />

x<br />

A ′ ✛ x<br />

Die Transformation von A nach A ′ soll durch einen Algorithmus DIFF erfolgen.<br />

A ′ ✛<br />

✛<br />

DIFF<br />

Wir werden untersuchen, wie für eine große Klasse von Funktionen bzw. Algorithmen<br />

die Transformation DIFF realisiert werden kann.<br />

Für eine rationale Funktion f : D ⊆ IR n → IR sei #(f, A) die Anzahl der rationalen<br />

Operationen zur Berechnung von f(x) mit Algorithmus A, und #(f, f ′ , A ′ ) sei die<br />

Anzahl der rationalen Operationen zur Berechnung von f(x) und f ′ (x) mit Algorithmus<br />

A ′ . Im Vergleich dieser “Kosten” gemäß der Formel<br />

#(f, f ′ , A ′ ) = K · #(f, A)<br />

gibt der Faktor K Auskunft über die Effizienz des Algorithmus A ′ . Und da A ′ durch<br />

DIFF erzeugt wird, ist K auch ein Maß für die Effizienz von DIFF. Bei geschickter<br />

Realisierung von DIFF ergibt sich K ≤ 4. Das heißt: Funktionswert f(x)<br />

A


1 EINLEITUNG 3<br />

und Ableitungswert f ′ (x) zusammen kosten höchstens 4-mal soviel wie der Funktionswert<br />

f(x) alleine. Im Vergleich dazu ist die Approximation von f ′ (x) durch<br />

einen Differenzen-Quotienten teuer, sie erfordert mindestens n + 1 Funktionswert-<br />

Berechnungen. Somit ergibt sich für n > 3 die überraschende Situation: Die Approximation<br />

von f ′ (x), berechnet mit einem Differenzen-Quotienten, ist teuerer als der<br />

exakte Wert f ′ (x), berechnet mit Algorithmischem <strong>Differenzieren</strong>.<br />

Im Jahr 1959 wurde an der Akademie der Wissenschaften der UdSSR ein Bericht [11]<br />

“Programme zum Automatischen <strong>Differenzieren</strong> für die Maschine BESM” in Russisch<br />

geschrieben, der eine der ersten Arbeiten zu unserem Thema ist. Seitdem erschienen<br />

etwa 300 einschlägige Veröffentlichungen, ein subjektive Auswahl ist im Literaturverzeichnis<br />

zu finden. Rall’s Buch [121] von 1981 ist heute eine Standard–Referenz. Einen<br />

guten Überblick geben die Proceedings [70] einer internationalen Tagung im Jahr 1991,<br />

herausgegeben von Griewank und Corliss. Von den neueren Veröffentlichungen, insbesondere<br />

im Zusammenhang mit der Intervall–Rechnung, ist Lohner’s Arbeit [106]<br />

von 1994 zu nennen. Das vorliegende Kapitel enthält die grundlegenden Ideen des<br />

Algorithmischen <strong>Differenzieren</strong>s, wobei wir auch auf die Hesse–Matrix einer reellen<br />

Funktion von n Veränderlichen eingehen. Die Darstellung ist bewußt breit ausgelegt,<br />

sodaß besondere Vorkenntnisse nicht nötig sind.


2 VORWÄRTS–METHODE 4<br />

2 Vorwärts–Methode<br />

Sei f :D ⊆ IR n → IR eine differenzierbare Funktion. f ′ bezeichne die Ableitung von f.<br />

Dann ist<br />

f ′ �<br />

∂f(x)<br />

(x) = ,<br />

∂x1<br />

∂f(x)<br />

, . . . ,<br />

∂x2<br />

∂f(x)<br />

�<br />

∈ IR<br />

∂xn<br />

1×n .<br />

f ′ (x) ist eine Matrix mit einer Zeile und n Spalten. Wir wollen f ′ (x) zusammensetzen<br />

aus Ableitungen von Teilen von f. Beginnen wir mit ganz einfachen Teilen, mit<br />

kanonischen Projektionen und konstanten Funktionen.<br />

Ist r : IR n → IR eine kanonische Projektion, d.h.<br />

r(x) = xk = k–te Komponente von x,<br />

so ist offensichtlich<br />

r ′ (x) = [0, . . . , 0, 1, 0, . . . , 0] mit 1 in Position k.<br />

Ist r : IR n → IR eine konstante Funktion, d.h.<br />

so gilt natürlich<br />

r(x) = gegebene oder berechnete Konstante,<br />

r ′ (x) = [0, . . . . . . , 0].<br />

So trivial diese Ableitungen auch sind, wir benötigen sie vorerst als Basis für den<br />

Aufbau von f ′ (x).<br />

Jetzt behandeln wir zwei geläufige Verfahren, aus gegebenen Funktionen in einfacher<br />

Weise neue Funktionen zu bilden, die rationale Komposition und die Verwendung von<br />

Bibliothek–Funktionen.<br />

2.1 Rationale Komposition<br />

Wir betrachten zwei differenzierbare Funktionen<br />

a : D ⊆ IR n → IR und b : D ⊆ IR n → IR.<br />

Sei r eine der Funktionen a + b, a − b, a · b, a/b mit der Einschränkung b(x) �= 0 für<br />

alle x ∈ D im Fall a/b. Die Funktion r ist differenzierbar. In Tabelle 1 sind Formeln<br />

für die Ableitung r ′ angegeben.<br />

Typ r = r ′ =<br />

+ r = a + b r ′ = a ′ + b ′<br />

− r = a − b r ′ = a ′ − b ′<br />

· r = a · b r ′ = b · a ′ + a · b ′<br />

/ r = a / b r ′ = (a ′ − r · b ′ )/b<br />

Tabelle 1: Ableitung der rationalen Komposition<br />

Wir wollen streng unterscheiden zwischen Funktionen und Funktionswerten: r und r ′<br />

sind Funktionen, r(x) und r ′ (x) sind Funktionswerte. Die Tabelle 1 zeigt also Formeln


2 VORWÄRTS–METHODE 5<br />

für Funktionen. Wenden wir eine der Funktionen r, r ′ auf ein x ∈ D an, so erhalten<br />

wir Formeln für Funktionswerte. Etwa für die Division erhalten wir<br />

r ′ (x) = (a ′ (x) − r(x) · b ′ (x))/b(x).<br />

Aus den Formeln in Tabelle 1 schließen wir:<br />

Das Paar r(x), r ′ (x) kann berechnet werden aus den Paaren a(x), a ′ (x) und b(x), b ′ (x).<br />

Diese schlichte Einsicht ist einer der wichtigsten Angelpunkte des Automatischen <strong>Differenzieren</strong>s.<br />

Das Paar r(x), r ′ (x) ist nicht ein Paar von Formeln, es ist auch nicht<br />

ein Paar von Funktionen, es ist ein Element von IR × IR 1×n . Der Mechanismus zur<br />

Berechnung des Paares r(x), r ′ (x) hängt nicht von x ab, er ist auch unabhängig von<br />

den speziellen Funktionen a und b, er wird allein bestimmt durch den Typ ω von r.<br />

Dies soll durch folgendes Diagramm verdeutlicht werden.<br />

r(x), r ′ (x)<br />

✛<br />

RAT<br />

✛<br />

✛<br />

✛<br />

ω<br />

a(x), a ′ (x)<br />

b(x), b ′ (x)<br />

RAT kann realisiert werden als Prozedur in PASCAL, als Subroutine in FORTRAN,<br />

oder als Funktion, wenn die gewählte Programmiersprache es zuläßt. Einfacher ist es,<br />

die vier Typen von r einzeln zu behandeln. Dann kann man in Programmiersprachen<br />

wie ADA, C++, PASCAL–XSC Operatoren definieren, die in kompakter Schreibweise<br />

RAT realisieren.<br />

Wir verwenden hier RAT als Funktion, die zu einem Typ ω ∈ {+, −, ·, /} und zu<br />

Paaren A = (a(x), a ′ (x)) und B = (b(x), b ′ (x)) das Paar R = (r(x), r ′ (x)) berechnet,<br />

R ←− RAT(ω, A, B).<br />

Ein kurzes Beispiel soll die Bedeutung der rationalen Komposition für die Berechnung<br />

von Ableitungen demonstrieren.


2 VORWÄRTS–METHODE 6<br />

Beispiel 1<br />

Gegeben sei die differenzierbare Funktion<br />

f : D ⊆ IR 2 → IR mit f(x) = x1 · x2 − 7<br />

,<br />

x1 + x2<br />

wobei D = {x|x = (x1, x2) ∈ IR 2 , x1 + x2 �= 0}. Gewünscht ist f ′ (3, 8). Wir definieren<br />

Funktionen f1, f2, . . . , f7 : D → IR durch<br />

f1(x) = x1<br />

f2(x) = x2<br />

f3(x) = 7<br />

f4(x) = f1(x) · f2(x)<br />

f5(x) = f4(x) − f3(x)<br />

f6(x) = f1(x) + f2(x)<br />

f7(x) = f5(x) / f6(x)<br />

Offensichtlich ist f7 = f. Da zu gegebenem x ∈ D nacheinander die Werte f1(x),<br />

f2(x),. . . , f7(x) = f(x) berechnet werden können, liegt ein Algorithmus A zur Berechnung<br />

von f(x) vor. Nun betrachten wir die Paare Yk = (fk(x), f ′ k(x)) für k =1, 2, . . . , 7.<br />

Mit x = (3, 8) sind die Paare Y1, Y2, Y3 bekannt. Die folgenden Paare Y4, Y5, Y6, Y7<br />

können schrittweise mit RAT berechnet werden.<br />

Y1 ←− (3, [1, 0])<br />

Y2 ←− (8, [0, 1])<br />

Y3 ←− (7, [0, 0])<br />

Y4 ←− RAT(·, Y1, Y2) = (24, [8, 3])<br />

Y5 ←− RAT(−, Y4, Y3) = (17, [8, 3])<br />

Y6 ←− RAT(+, Y1, Y2) = (11, [1, 1])<br />

Y7 ←− RAT(/, Y5, Y6) = (1.54 . . . , [0.586 . . . , 0.132 . . .])<br />

Somit ist f(3, 8) = 1.54 . . . und f ′ (3, 8) = [0.586 . . . , 0.132 . . .]. ⊓⊔<br />

Für jede explizit gegebene rationale Funktion f und jedes zulässige Argument x können<br />

wir f ′ (x) mit RAT schrittweise berechnen. Eine Formel für die Ableitung f ′ im<br />

herkömmlichen Sinne wird dabei nicht verwendet.


2 VORWÄRTS–METHODE 7<br />

2.2 Bibliothek–Funktionen<br />

Sei Λ eine Kollektion differenzierbarer reeller Funktionen einer reellen Variablen. Wir<br />

denken dabei an Funktionen wie sin, ln, exp,. . . und ähnliche. Der Kürze halber seien<br />

die Funktionen in Λ Bibliothek–Funktionen genannt. Wir betrachten eine Bibliothek–<br />

Funktion<br />

λ : E ⊆ IR → IR<br />

und eine differenzierbare Funktion<br />

a : D ⊆ IR n → IR.<br />

Unter der Voraussetzung a(D) ⊆ E definieren wir eine neue Funktion<br />

r : D ⊆ IR n → IR mit r(x) := λ(a(x)).<br />

Diese Funktion r ist differenzierbar und es gilt<br />

r ′ (x) = λ ′ (a(x)) · a ′ (x).<br />

Wir nehmen an, die Funktionen λ und λ ′ können für jedes zulässige Argument ausgewertet<br />

werden. Dies ist kein Problem für die üblichen Bibliothek–Funktionen sin, ln,<br />

exp,. . . und ähnliche.<br />

Aus den Formeln für r(x) und r ′ (x) schließen wir:<br />

Das Paar r(x), r ′ (x) kann mittels λ, λ ′ berechnet werden aus dem Paar a(x), a ′ (x).<br />

Diese fast triviale Erkenntnis ist ein weiterer wichtiger Angelpunkt des Algorithmischen<br />

<strong>Differenzieren</strong>s. Der Mechanismus zur Berechnung des Paares r(x), r ′ (x) hängt nicht<br />

von x ab, er ist auch unabhängig von den speziellen Funktionen a und λ. Zur Berechnung<br />

des Paares r(x), r ′ (x) aus dem Paar a(x), a ′ (x) müssen wir allerdings wissen,<br />

welches λ ∈ Λ verwendet werden soll. Dies soll durch folgendes Diagramm verdeutlicht<br />

werden.<br />

r(x), r ′ (x)<br />

✛<br />

LIB<br />

✛<br />

✛<br />

λ<br />

a(x), a ′ (x)<br />

LIB kann realisiert werden als Prozedur in PASCAL, als Subroutine in FORTRAN,<br />

oder als Funktion, wenn die gewählte Programmiersprache das zuläßt. Man kann auch<br />

jede Bibliothek–Funktion einzeln behandeln und den Namen der Bibliothek–Funktion<br />

in den Namen der entsprechenden Prozedur bzw. Subroutine bzw. Funktion stecken.<br />

Wir verwenden hier LIB als Funktion, die zu einer Bibliothek–Funktion λ und zu<br />

einem Paar A = (a(x), a ′ (x)) das Paar R = (r(x), r ′ (x)) berechnet,<br />

R ←− LIB(λ, A).<br />

Ein kurzes Beispiel soll die Verwendung von Bibliothek–Funktionen für die Berechnung<br />

von Ableitungen demonstrieren.


2 VORWÄRTS–METHODE 8<br />

Beispiel 2<br />

Gegeben sei die differenzierbare Funktion<br />

f : D ⊆ IR 3 → IR mit f(x) = (x1 − 7) · sin(x1 + x2)<br />

,<br />

wobei D = {x|x = (x1, x2, x3) ∈ IR 3 , x3 �= 0}. Gewünscht ist f ′ (−13, 8, 0.3). Zu<br />

gegebenem x ∈ D kann der Funktionswert f(x) schrittweise berechnet werden wie in<br />

Spalte 1 des folgenden Schemas angegeben. Hier ist y9 = f(x).<br />

y1 = x1 f1(x) = x1 Y1 ← (x1, [1, 0, 0])<br />

y2 = x2 f2(x) = x2 Y2 ← (x2, [0, 1, 0])<br />

y3 = x3 f3(x) = x3 Y3 ← (x3, [0, 0, 1])<br />

y4 = 7 f4(x) = 7 Y4 ← (7, [0, 0, 0])<br />

y5 = y1 − y4 f5(x) = f1(x) − f4(x) Y5 ← RAT(−, Y1, Y4)<br />

y6 = y1 + y2 f6(x) = f1(x) + f2(x) Y6 ← RAT(+, Y1, Y2)<br />

y7 = sin(y6) f7(x) = sin(f6(x)) Y7 ← LIB(sin, Y6)<br />

y8 = y5 · y7 f8(x) = f5(x) · f7(x) Y8 ← RAT(·, Y5, Y7)<br />

y9 = y8/y3 f9(x) = f8(x)/f3(x) Y9 ← RAT(/, Y8, Y3)<br />

Das Schema für y1, y2, . . . , y9 erlaubt die Definition von Funktionen f1, f2, . . . , f9 wie<br />

in Spalte 2 angegeben. Offensichtlich ist f9 = f. Nun führen wir Paare Yk =<br />

(fk(x), f ′ k(x)), für k = 1, 2, . . . , 9, ein. Für gegebenes x sind die Paare Y1, Y2, Y3, Y4<br />

bekannt. Und für k = 5, 6, 7, 8, 9 kann das Paar Yk aus bereits ermittelten Paaren mit<br />

RAT und LIB berechnet werden. Das letzte Paar ist<br />

Y9 = (f9(x), f ′ 9(x)) = (f(x), f ′ (x)).<br />

Für x = (−13, 8, 0.3) erhalten wir<br />

f(x) = −63.9 . . . und f ′ (x) = [−15.7 . . . , −18.9 . . . , 213. . . .].<br />

Die Spalte 1 stellt eine code-list für die Funktion f dar, wie sie von L.B. Rall in [121]<br />

verwendet wird. Diese code-list ist ein Algorithmus A zur Berechnung von f(x). Die<br />

Spalte 2 zeigt, daß eine code-list für f eine iterative Folge f1, f2, . . . , f9 von Funktionen<br />

definiert. Und die Spalte 3 kann als Algorithmus A ′ zur Berechnung von f(x) und f ′ (x)<br />

aufgefaßt werden. Die in der Einleitung genannte Transformation DIFF : A → A ′ ist<br />

im Vergleich von Spalte 1 und Spalte 3 ersichtlich. ⊓⊔<br />

x3


2 VORWÄRTS–METHODE 9<br />

2.3 Allgemeines Schema<br />

Wir betrachten eine Funktion f : D ⊆ IR n → IR, die durch einen Algorithmus A gemäß<br />

Tabelle 2 definiert ist.<br />

(1) Für k = 1, 2, . . . , n<br />

yk = xk = k–te Komponente von x<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

yk = Φk(y1, y2, . . . , yk−1)<br />

(3) f(x) = yn+t<br />

Tabelle 2: Algorithmus A zur Berechnung von f(x)<br />

Die verwendeten Funktionen Φn+1, Φn+2, . . . , Φn+t seien differenzierbar. Dann ist f<br />

ebenfalls differenzierbar. Wir definieren Funktionen f1, f2, . . . , fn mit<br />

fk(x) := xk = k–te Komponente von x<br />

und Funktionen fn+1, fn+2, . . . , fn+t mit<br />

fk(x) := Φk(f1(x), f2(x), . . . , fk−1(x)).<br />

Ist Φk eine konstante Funktion, dann ist natürlich fk ebenfalls eine konstante Funktion.<br />

Ist Φk von der Gestalt<br />

Φk(y1, y2, . . . , yk−1) = yi ∗ yj mit ∗ ∈ {+, −, ·, /},<br />

dann ist fk(x) = fi(x) ∗ fj(x), also ist fk eine rationale Komposition wie in Abschnitt<br />

2.1 behandelt. Ist Φk von der Gestalt<br />

Φk(y1, y2, . . . , yk−1) = λ(yi) mit λ ∈ Λ,<br />

dann ist fk(x) = λ(fi(x)), also ist fk eine Funktion wie in Abschnitt 2.2 behandelt.<br />

Im allgemeinen nehmen wir an, daß Φk für gegebene Argumente ausgewertet werden<br />

kann. Für die Ableitung f ′ k erhalten wir mit der Ketten–Regel<br />

⎡ ⎤<br />

f ′ k(x) = Φ ′ k(f1(x), f2(x), . . . , fk−1(x)) ·<br />

⎢<br />

⎣<br />

f ′ 1(x)<br />

.<br />

f ′ k−1(x)<br />

Diese Formel für f ′ k(x) beinhaltet als Spezialfälle auch die entsprechenden Formeln für<br />

die Ableitungen aus den Abschnitten 2.1 und 2.2. Im allgemeinen nehmen wir an, daß<br />

Φ ′ k für gegebene Argumente ausgewertet werden kann.<br />

Nun betrachten wir Paare von Funktionswert und Ableitungswert und setzen<br />

Yk := (fk(x), f ′ k(x)) für k = 1, 2, . . . , n + t.<br />

Für k = 1, 2, . . . , n ist das Paar Yk offensichtlich, und für k = n + 1, n + 2, . . . , n + t<br />

kann das Paar Yk aus den Paaren Y1, Y2, . . . , Yk−1 berechnet werden,<br />

Yk ←− Φ ∗ k(Y1, Y2, . . . , Yk−1).<br />

⎥<br />

⎦ .


2 VORWÄRTS–METHODE 10<br />

Damit ergibt sich ein Algorithmus A ′ zur Berechnung von f(x) und f ′ (x) wie in Tabelle<br />

3 dargestellt.<br />

(1) Für k = 1, 2, . . . , n<br />

Yk ← (xk, [0, . . . , 0, 1, 0, . . . , 0]) mit 1 in Position k<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

Yk ← Φ ∗ k(Y1, Y2, . . . , Yk−1)<br />

(3) (f(x), f ′ (x)) ← Yn+t<br />

Tabelle 3: Algorithmus A ′ zur Berechnung von f(x) und f ′ (x)<br />

Die Anwendung von A ′ nennt man Vorwärts–Methode. Die Algorithmen A und A ′<br />

sehen sich sehr ähnlich. Entsprechend einfach und naheliegend ist daher die in der<br />

Einleitung erwähnte Transformation DIFF : A → A ′ . Allerdings sind wir bisher sehr<br />

großzügig mit den Konstanten umgegangen. Die Verwendung einer Konstanten als<br />

konstante Funktion, deren Ableitung nur Nullen enthält, fügt sich zwar einfach in die<br />

Theorie ein, in der Praxis wird man jedoch darauf Wert legen, unnötige Operationen<br />

mit Nullen zu vermeiden. Dies führt zu einer Verfeinerung der Funktionen RAT und<br />

LIB und zu einer sorgfältigeren Behandlung von Φk. In der Transformation DIFF<br />

müssen dann entsprechend viele Spezialfälle berücksichtigt werden.<br />

2.4 Komplexität<br />

In diesem Abschnitt beschränken wir uns auf eine rationale Funktion<br />

f : D ⊆ IR n → IR.<br />

Wir wollen abschätzen, wie viele rationale Operationen zur Berechnung von Funktionswert<br />

f(x) und Ableitungswert f ′ (x) benötigt werden. Unter einer rationalen Operation<br />

verstehen wir Addition oder Subtraktion oder Multiplikation oder Division zweier<br />

reeller Zahlen oder Vorzeichenwechsel einer reellen Zahl. Ferner soll abgeschätzt werden,<br />

wieviel Speicherplatz nötig ist. Bei solchen Abschätzungen ist es wesentlich zu<br />

beachten, daß sowohl f(x) als auch f ′ (x) auf verschiedene Weisen berechnet werden<br />

können. So gibt es zum einen für eine Funktion viele Schreibweisen, die sich in der<br />

Anzahl der Operationen unterscheiden, etwa<br />

f(x) = 1 − x2<br />

=<br />

x1 + x2<br />

x1<br />

.<br />

x1 + x2<br />

Zum anderen gibt es bei einem vorgegebenen Algorithmus zur Berechnung von f(x)<br />

verschiedene Algorithmen, die den Ableitungswert f ′ (x) berechnen.<br />

Wir folgen dem Algorithmus A in Tabelle 2 und spezifizieren die Vorschrift<br />

yk = Φk(y1, y2, . . . , yk−1).<br />

Wir nehmen an, daß yk mit einer rationalen Operation aus y1, y2, . . . , yk−1 berechnet<br />

wird. Die verschiedenen Möglichkeiten sind in Tabelle 4 zusammengestellt, wobei ci<br />

und cj konstante reelle Zahlen sind.<br />

Den präzisierten Algorithmus zur Berechnung von f(x) nennen wir jetzt FUN, siehe<br />

Tabelle 5.


2 VORWÄRTS–METHODE 11<br />

Typ yk y ′ k #(yk, y ′ k)<br />

A yi + yj mit i �= j y ′ i + y ′ j n + 1<br />

S yi − yj mit i �= j y ′ i − y ′ j n + 1<br />

M yi · yj mit i �= j yj · y ′ i + yi · y ′ j 3n + 1<br />

D yi/yj mit i �= j (y ′ i − yk · y ′ j)/yj 3n + 1<br />

AV yi + yi 2 · y ′ i n + 1<br />

SV yi − yi 0 1<br />

MV yi · yi (2 · yi) · y ′ i n + 2<br />

DV yi/yi 0 1<br />

AVC yi + cj y ′ i 1<br />

SVC yi − cj y ′ i 1<br />

MVC yi · cj cj · y ′ i n + 1<br />

DVC yi/cj y ′ i/cj n + 1<br />

ACV ci + yj y ′ j 1<br />

SCV ci − yj −y ′ j n + 1<br />

MCV ci · yj ci · y ′ j n + 1<br />

DCV ci/yj (−yk/yj) · y ′ j n + 3<br />

VW −yj −y ′ j n + 1<br />

Tabelle 4: Formeln für yk und y ′ k<br />

(1) Für k = 1, 2, . . . , n<br />

yk = xk = k–te Komponente von x<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

yk = eine der Formeln in Tabelle 4 Spalte 2<br />

(3) f(x) = yn+t<br />

Tabelle 5: Algorithmus FUN zur Berechnung von f(x)


2 VORWÄRTS–METHODE 12<br />

Wir definieren<br />

#(f, FUN) := Anzahl der rationalen Operationen zur Berechnung<br />

von f(x) mit FUN.<br />

Offensichtlich gilt #(f, FUN) = t. Es sei nochmals darauf hingewiesen, daß die Zahl<br />

#(f, FUN) nicht eine Kenngröße der Funktion f ist, sondern dem Algorithmus FUN<br />

zugeordnet ist. Die in der Literatur auftretende Bezeichnung L(f) im Zusammenhang<br />

mit “Anzahl der Operationen” sollte reserviert bleiben für L(f) := min #(f, FUN),<br />

wobei das Minimum zu nehmen ist über alle möglichen Algorithmen vom Typ FUN<br />

zur Berechnung von f(x).<br />

Nun folgen wir dem Algorithmus A ′ in Tabelle 3 und spezifizieren die Vorschrift<br />

Yk ←− Φ ∗ k(Y1, Y2, . . . , Yk−1).<br />

Das Paar Yk besteht aus yk = fk(x) und y ′ k = f ′ k(x). Abhängig vom Typ der k–ten<br />

Operation wird y ′ k berechnet wie in Tabelle 4 Spalte 3 angegeben. Den so präzisierten<br />

Algorithmus zur Berechnung von f(x) und f ′ (x) nennen wir jetzt VM (Vorwärts–<br />

Methode), siehe Tabelle 6.<br />

Wir definieren<br />

(1) Für k = 1, 2, . . . , n<br />

(yk, y ′ k) ← (xk, [0, . . . , 0, 1, 0, . . . , 0]) mit 1 in Position k<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

(yk, y ′ k) ← gemäß Tabelle 4 Spalte 2 und Spalte 3<br />

(3) (f(x), f ′ (x)) ← (yn+t, y ′ n+t)<br />

Tabelle 6: Algorithmus VM<br />

#(f, f ′ , VM) := Anzahl der rationalen Operationen zur Berechnung<br />

von f(x) und f ′ (x) mit VM.<br />

Es ist sehr einfach, die Größe #(f, f ′ , VM) abzuschätzen. In Tabelle 4 Spalte 4 ist<br />

unter #(yk, y ′ k) angemerkt, wie “teuer” ein Paar (yk, y ′ k) ist. Damit erhalten wir<br />

Proposition 1: Für die Berechnung von f(x) und f ′ (x) mit dem Algorithmus VM<br />

gilt<br />

#(f, f ′ , VM) ≤ (3n + 1) · #(f, FUN).<br />

Funktionswert und Ableitungswert zusammen, berechnet mit VM, kosten also höchstens<br />

(3n + 1)–mal soviel wie der Funktionswert alleine. Diese Abschätzung ist scharf.<br />

Wenn im Algorithmus FUN nur Operationen vom Typ M oder D auftreten, dann wird<br />

obige Ungleichung zu einer Gleichung.


2 VORWÄRTS–METHODE 13<br />

Nun zum Bedarf an Speicherplätzen für den Algorithmus VM. Es ist schwierig, eine<br />

relevante Größe zu definieren, da wir im Algorithmus VM nicht spezifiziert haben, was<br />

während des Ablaufes des Algorithmus zu speichern ist und was eventuell zu vergessen<br />

ist. Wenn wir jedes Paar (yk, y ′ k) für k = 1, 2, . . . , n + t separat speichern, dann sind<br />

(n + t) · (n + 1) Speicherplätze nötig. In einem Programm für den Algorithmus VM<br />

wird man allerdings versuchen, gespeicherte Zahlen zu vergessen, wenn sie für den Rest<br />

des Algorithmus nicht mehr von Belang sind, d.h. man überschreibt Speicherplätze.<br />

Dadurch kann der Bedarf an Speicherplätzen weit unter (n + t) · (n + 1) sinken.<br />

Wir wollen noch eine Variante V<strong>M1</strong> zum Algorithmus VM angeben. Der Algorithmus<br />

VM startet in Block (1) mit den Ableitungen y ′ 1, y ′ 2, . . . , y ′ n, die jeweils (n − 1)<br />

System–Nullen enthalten. Im Block (2) werden aus diesen Ableitungen neue Ableitungen<br />

gebildet. Dabei werden rationale Operationen mit System–Nullen ausgeführt.<br />

Diese unnötigen Operationen werden im Algorithmus V<strong>M1</strong> unterdrückt. Jedem y ′ k<br />

ordnen wir eine Index–Menge Ik zu, welche die Indizes der signifikanten Komponenten<br />

von y ′ k enthält. So gehört z.B. zu y ′ 1 die Index–Menge I1 = {1}. Angenommen y ′ i, Ii<br />

und y ′ j, Ij sind bereits berechnet und y ′ k = y ′ i + y ′ j. Dann werden die Komponenten von<br />

y ′ k berechnet nach der Vorschrift<br />

y ′ ⎧<br />

y<br />

⎪⎨<br />

kµ =<br />

⎪⎩<br />

′ iµ + y ′ jµ für µ ∈ Ii ∩ Ij<br />

y ′ iµ für µ ∈ Ii\Ij<br />

y ′ ⎫<br />

⎪⎬<br />

jµ für µ ∈ Ij\Ii<br />

⎪⎭<br />

0 für µ /∈ Ii ∪ Ij<br />

für µ = 1, 2, . . . , n.<br />

Die zu y ′ k gehörige Index–Menge ist Ik = Ii ∪ Ij. Analog werden bei den anderen<br />

Verknüpfungen von Ableitungen die Operationen mit System–Nullen eingespart.


3 RÜCKWÄRTS–METHODE 14<br />

3 Rückwärts–Methode<br />

In Abschnitt 2 haben wir gezeigt, wie ein Algorithmus A zur Berechnung eines Funktionswertes<br />

f(x) transformiert werden kann in einen Algorithmus A ′ für die Berechnung<br />

von Funktionswert f(x) und Ableitungswert f ′ (x). Der beschriebene Weg ist nicht der<br />

einzige, das gesteckte Ziel zu erreichen. Es gibt einen anderen Weg, der ebenfalls<br />

zu einem Algorithmus für die Berechnung von f(x) und f ′ (x) führt. Während bei<br />

der Vorwärts–Methode schrittweise die Ableitungen ∂yk<br />

verwendet werden, liefert der<br />

∂xi<br />

zweite Weg eine Methode, in der schrittweise Ableitungen ∂yn+t<br />

erscheinen. Diese<br />

∂yk<br />

zweite Methode nennen wir Rückwärts–Methode, aus Gründen, die noch ersichtlich<br />

werden. In diesem Abschnitt wollen wir den mathematischen Formalismus für die<br />

Rückwärts–Methode darlegen. Dabei werden – der Geschlossenheit zuliebe – einige<br />

Bezeichnungen aus Abschnitt 2 wiederholt.<br />

3.1 Allgemeines Schema<br />

Wir betrachten eine Funktion f : D ⊆ IR n → IR, die durch einen Algorithmus A gemäß<br />

Tabelle 7 definiert ist.<br />

(1) Für k = 1, 2, . . . , n<br />

yk = xk = k–te Komponente von x<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

yk = Φk(y1, y2, . . . , yk−1)<br />

(3) f(x) = yn+t<br />

Tabelle 7: Algorithmus A zur Berechnung von f(x)<br />

Wir nehmen an, daß für k = n + 1, n + 2, . . . , n + t die Funktion<br />

Φk : Dk−1 ⊆ IR k−1 → IR (1)<br />

und deren Ableitung Φ ′ k bekannt sind. Wir nehmen ferner an, daß die Funktionen<br />

Φk und Φ ′ k für gegebene Argumente ausgewertet werden können. Der Algorithmus<br />

A beschreibt, wie zu gegebenem x ∈ D der Funktionswert f(x) schrittweise über die<br />

Hilfsgrößen y1, y2, . . . , yn+t zu berechnen ist.<br />

Nun definieren wir für k = n + 1, n + 2, . . . , n + t<br />

Ek : Dk−1 ⊆ IR k−1 → IR k � �<br />

z<br />

mit Ek(z) := .<br />

Φk(z)<br />

(2)<br />

Jeder Funktion Φk ist also eine Funktion Ek zugeordnet. Ek kopiert das Argument z<br />

und fügt eine neue Komponente Φk(z) an. Ferner definieren wir die Funktion<br />

L : IR n+t → IR mit L(z) := letzte Komponente von z. (3)


3 RÜCKWÄRTS–METHODE 15<br />

Damit erhalten wir eine schöne Darstellung der Funktion f,<br />

f(x) = L(En+t(En+t−1( . . . En+2(En+1(x)) . . . ))), (4)<br />

oder noch kürzer<br />

f = L ◦ En+t ◦ En+t−1 ◦ . . . ◦ En+2 ◦ En+1, (5)<br />

wobei ◦ die Hintereinanderausführung von Funktionen bedeutet. Die Formel (4)<br />

beschreibt in kompakter Weise die Berechnung von f(x) gemäß Algorithmus A. Der<br />

Berechnung von yk in Algorithmus A entspricht die Auswertung der Funktion Ek in<br />

Formel (4).<br />

<strong>Differenzieren</strong> wir die Formel (4)! Zur Abkürzung setzen wir<br />

zn := x (6)<br />

und für k = n + 1, n + 2, . . . , n + t<br />

zk := Ek(Ek−1( . . . En+2(En+1(x)) . . . )). (7)<br />

Aus (4) ergibt sich mit der Ketten–Regel<br />

f ′ (x) = L ′ (zn+t) · E ′ n+t(zn+t−1) · . . . · E ′ n+2(zn+1) · E ′ n+1(zn). (8)<br />

Somit erhalten wir für f ′ (x) ein Produkt von Jacobi–Matrizen. Die Multiplikation von<br />

Matrizen ist assoziativ, also gibt es viele Möglichkeiten, das Produkt zu ermitteln.<br />

Bei genauerem Hinsehen kann man erkennen, daß die Multiplikation von rechts nach<br />

links der Vorwärts–Methode entspricht. Die Multiplikation von links nach rechts ergibt<br />

die Rückwärts–Methode. Diese soll jetzt näher beschrieben werden.<br />

Zunächst geben wir den Teil–Produkten Namen, wir definieren<br />

pn+t+1 := L ′ (zn+t), (9)<br />

und für k = n + t, n + t − 1, . . . , n + 1 in dieser Reihenfolge<br />

pk := pk+1 · E ′ k(zk−1). (10)<br />

Dann stellen wir fest, daß für k = n, n + 1, . . . , n + t gilt<br />

⎡ ⎤<br />

y1<br />

⎢ ⎥<br />

⎢<br />

⎢y2<br />

⎥<br />

zk = ⎢ ⎥<br />

⎢<br />

⎣ . ⎥<br />

⎦<br />

yk<br />

mit y1, y2, . . . , yk gemäß Algorithmus A. (11)<br />

Leider benötigen wir die Vektoren zn+t, zn+t−1, . . . , zn in dieser Reihenfolge. Wir<br />

müssen also die Werte y1, y2, . . . , yn+t mit Algorithmus A berechnen und können dann<br />

erst mit der Produktbildung beginnen. In Tabelle 8 ist unser Plan skizziert.


3 RÜCKWÄRTS–METHODE 16<br />

(1) Berechne y1, y2, . . . , yn+t = f(x) mit Algorithmus A. Mit (11)<br />

stehen somit die Vektoren zn+t, zn+t−1, . . . , zn zur Verfügung<br />

(2) Berechnung von f ′ (x):<br />

(2.1) pn+t+1 := L ′ (zn+t)<br />

(2.2) Für k = n + t, n + t − 1, . . . , n + 1 in dieser Reihenfolge<br />

pk := pk+1 · E ′ k(zk−1)<br />

(2.3) f ′ (x) = pn+1<br />

Tabelle 8: Plan für die Rückwärts–Methode<br />

Das folgende Schema soll unseren Plan verdeutlichen.<br />

f ′ (x) =L ′ (zn+t)·E ′ n+t(zn+t−1)·. . .·E ′ n+2(zn+1)·E ′ n+1(zn)<br />

pn+t+1<br />

Nun zu technischen Details! Es gilt<br />

pn+t<br />

pn+2<br />

pn+1<br />

pn+t+1 := L ′ (zn+t) = [0, . . . , 0, 1] = Zeile mit n + t Spalten. (12)<br />

pk+1 ist eine Zeile mit k Spalten. E ′ k(zk−1) ist eine Matrix mit k Zeilen und k − 1<br />

Spalten. Die oberen k − 1 Zeilen von E ′ k(zk−1) bilden eine Einheitsmatrix, und die<br />

letzte Zeile von E ′ k(zk−1) ist Φ ′ k(zk−1). Diese besonders einfache Gestalt der Matrix<br />

E ′ k(zk−1) bewirkt<br />

pk<br />

� �� �<br />

pk,1 . . . pk,k−1<br />

pk+1<br />

� �� �<br />

= pk+1,1 . . . pk+1,k−1 pk+1,k<br />

E<br />

� �� �<br />

′ k(zk−1)<br />

• 1<br />

· · · · · · · · · · · ·<br />

Φ ′ k(zk−1)<br />

[pk,1 . . . pk,k−1] = [pk+1,1 . . . pk+1,k−1] + pk+1,k · letzte Zeile von E ′ k(zk−1) (13)<br />

oder mit Φ ′ k(zk−1) ausgedrückt<br />

[pk,1 . . . pk,k−1] = [pk+1,1 . . . pk+1,k−1] + pk+1,k · Φ ′ k(zk−1). (14)<br />

1


3 RÜCKWÄRTS–METHODE 17<br />

In Block (2.2) Schritt k unseres Planes ist also zu einer Zeile ein Vielfaches der Zeile<br />

Φ ′ k(zk−1) zu addieren. Dies legt “ Überschreiben” nahe. Wir führen eine Arbeitszeile U<br />

der Länge n + t ein,<br />

U = U1 . . . Un Un+1 . . . . . . Un+t<br />

in der wir die aktuellen Werte von pk speichern. Aus (14) entsteht dann die update–<br />

Formel<br />

Uµ ←− Uµ + Uk · Φ ′ k(zk−1)µ für µ = 1, 2, . . . , k − 1, (15)<br />

wobei der Index µ die Spalte von U bzw. Φ ′ k(zk−1) kennzeichnet. Nach Beendigung<br />

von Block (2.2) unseres Planes enthält die Arbeitszeile U die Werte<br />

und es gilt<br />

U = pn+1,1 . . . pn+1,n pn+2,n+1 . . . . . . pn+t+1,n+t (16)<br />

f ′ (x) = pn+1 = [U1, U2, . . . , Un]. (17)<br />

Damit ergibt sich ein Algorithmus A ′ zur Berechnung von f(x) und f ′ (x) wie in Tabelle<br />

9 dargestellt.<br />

(1) Berechne y1, y2, . . . , yn+t = f(x) mit Algorithmus A.<br />

(2) Berechnung von f ′ (x):<br />

(2.1) U ← [0, . . . , 0, 1] mit Länge n + t<br />

(2.2) Für k = n + t, n + t − 1, . . . , n + 1 in dieser Reihenfolge<br />

für µ = 1, 2, . . . , k − 1<br />

Uµ ← Uµ + Uk · Φ ′ k(y1, y2, . . . , yk−1)µ<br />

(2.3) f ′ (x) ← [U1, U2, . . . , Un]<br />

Tabelle 9: Algorithmus A ′ zur Berechnung von f(x) und f ′ (x)<br />

3.2 Komplexität<br />

Über den Rechenaufwand des Algorithmus A ′ kann Näheres erst ausgesagt werden,<br />

wenn Einzelheiten über die Funktionen Φk und Φ ′ k für k = n + 1, n + 2, . . . , n + t<br />

vorliegen. Wir betrachten hier nur rationale Φk. Ferner nehmen wir an, daß die<br />

Vorschrift<br />

yk = Φk(y1, y2, . . . , yk−1) (18)<br />

nur eine rationale Operation darstellt. Die verschiedenen Möglichkeiten sind in Tabelle<br />

10 Spalte 2 angegeben.


3 RÜCKWÄRTS–METHODE 18<br />

Tk yk ¯yki ¯ykj Ski Skj #(Ski, Skj)<br />

A yi + yj mit i �= j 1 1 Uk Uk 0<br />

S yi − yj mit i �= j 1 −1 Uk Uk 0<br />

M yi · yj mit i �= j yj yi Uk · yj Uk · yi 2<br />

D yi/yj mit i �= j 1/yj −yk/yj Uk/yj Ski · yk 2<br />

AV yi + yi 2 Uk · 2 1<br />

SV yi − yi 0<br />

MV yi · yi 2 · yi Uk · 2 · yi 2<br />

DV yi/yi 0<br />

AVC yi + cj 1 Uk 0<br />

SVC yi − cj 1 Uk 0<br />

MVC yi · cj cj Uk · cj 1<br />

DVC yi/cj 1/cj Uk/cj 1<br />

ACV ci + yj 1 Uk 0<br />

SCV ci − yj −1 Uk 0<br />

MCV ci · yj ci Uk · ci 1<br />

DCV ci/yj −yk/yj Uk · yk/yj 2<br />

VW −yj −1 Uk 0<br />

Tabelle 10: Formeln für yk, ¯yki, ¯ykj, Ski, Skj in Abhängigkeit vom Typ Tk Die<br />

Berechnung des Funktionswertes f(x) erfolge mit dem Algorithmus FUN gemäß Tabelle<br />

11.<br />

(1) Für k = 1, 2, . . . , n<br />

yk = xk = k–te Komponente von x<br />

(2) Für k = n + 1, n + 2, . . . , n + t<br />

yk = eine der Formeln in Tabelle 10 Spalte 2<br />

(3) f(x) = yn+t<br />

Tabelle 11: Algorithmus FUN zur Berechnung von f(x)<br />

Dann sind die Funktionen Φk bekannt, und damit auch die Funktionen Φ ′ k. Es sei<br />

¯yk := Φ ′ k(y1, y2, . . . , yk−1). (19)<br />

Wegen der besonderen Gestalt von Φk enthält die Zeile ¯yk höchstens zwei von 0 verschiedene<br />

Einträge. Ist zum Beispiel<br />

yk = Φk(y1, y2, . . . , yk−1) = yi · yj


3 RÜCKWÄRTS–METHODE 19<br />

mit i �= j, so gilt<br />

¯yk = Φ ′ k(y1, y2, . . . , yk−1) = [0, . . . , 0, yj, 0, . . . , 0, yi, 0, . . . , 0]<br />

mit yj in Spalte i und yi in Spalte j. Die update–Vorschrift in Tabelle 9 Block (2.2)<br />

für µ = 1, 2, . . . , k − 1<br />

Uµ ← Uµ + Uk · Φ ′ k(y1, y2, . . . , yk−1)µ<br />

schmilzt daher zusammen auf höchstens zwei updates der Gestalt<br />

Ui ← Ui + Uk · ¯yki<br />

Uj ← Uj + Uk · ¯ykj<br />

In Tabelle 10 sind für alle auftretenden Fälle die ¯yki und/oder ¯ykj angeben.<br />

Zur Einsparung von Operationen setzen wir<br />

(20)<br />

(21)<br />

Ski := Uk · ¯yki für Tk ∈ {A,S,M,D,AV,MV,AVC,SVC,MVC,DVC} (22)<br />

Skj := Uk · ¯ykj für Tk ∈ {A,M,ACV,MCV} (23)<br />

Skj := −Uk · ¯ykj für Tk ∈ {S,D,SCV,DCV,VW} (24)<br />

Damit erhalten wir aus (20) und (21) die endgültigen update–Formeln<br />

Ui ← Ui + Ski für Tk ∈ {A,S,M,D,AV,MV,AVC,SVC,MVC,DVC} (25)<br />

Uj ← Uj + Skj für Tk ∈ {A,M,ACV,MCV} (26)<br />

Uj ← Uj − Skj für Tk ∈ {S,D,SCV,DCV,VW} (27)<br />

Den so präzisierten Algorithmus zur Berechnung von f(x) und f ′ (x) nennen wir jetzt<br />

RM (Rückwärts–Methode), siehe Tabelle 12.<br />

(1) Berechne y1, y2, . . . , yn+t = f(x) mit Algorithmus FUN.<br />

(2) Berechnung von f ′ (x):<br />

(2.1) U ← [0, . . . , 0, 1] mit Länge n + t<br />

(2.2) Für k = n + t, n + t − 1, . . . , n + 1 in dieser Reihenfolge<br />

für Tk ∈ {A,S,M,D,AV,MV,AVC,SVC,MVC,DVC}<br />

Ski ← gemäß Tabelle 10<br />

Ui ← Ui + Ski<br />

für Tk ∈ {A,M,ACV,MCV}<br />

Skj ← gemäß Tabelle 10<br />

Uj ← Uj + Skj<br />

für Tk ∈ {S,D,SCV,DCV,VW}<br />

Skj ← gemäß Tabelle 10<br />

Uj ← Uj − Skj<br />

(2.3) f ′ (x) ← [U1, U2, . . . , Un]<br />

Tabelle 12: Algorithmus RM


3 RÜCKWÄRTS–METHODE 20<br />

Wir definieren<br />

#(f, f ′ , RM) := Anzahl der rationalen Operationen zur Berechnung<br />

von f(x) und f ′ (x) mit RM.<br />

Proposition 2: Für die Berechnung von f(x) und f ′ (x) mit dem Algorithmus RM<br />

gilt<br />

#(f, f ′ , RM) ≤ 5 · #(f, FUN).<br />

Beweis: Block (1) kostet t Operationen. In Tabelle 10 ist unter #(Ski, Skj) angemerkt,<br />

wie teuer Ski und/oder Skj sind. Für k = n + t, n + t − 1, . . . , n + 1 bezeichne<br />

#(update,k) die Anzahl der in Block (2.2) Schritt k durchzuführenden update–<br />

Operationen. Offensichtlich ist #(update,k) höchstens 2. Somit ergibt sich<br />

#(f, f ′ , RM) = t +<br />

≤ t +<br />

n+t<br />

�<br />

k=n+1<br />

n+t<br />

�<br />

k=n+1<br />

(#(Ski, Skj) + #(update, k))<br />

(2 + 2) = 5t = 5 · #(f, FUN).<br />

Die Abschätzung in Proposition 2 ist scharf. Wenn im Algorithmus FUN nur Operationen<br />

vom Typ M oder D auftreten, dann wird obige Ungleichung zu einer Gleichung.<br />

Zur Durchführung des Algorithmus RM werden zwei Listen der Länge n+t benötigt,<br />

eine für die Werte y1, y2, . . . , yn+t, und eine für die Arbeitszeile U. Vergleicht man die<br />

Vorwärts–Methode mit Überschreiben und die Rückwärts–Methode, so zeigt sich, daß<br />

im allgemeinen der Bedarf an Speicherplätzen bei der Vorwärts–Methode sehr viel<br />

kleiner ist als der Bedarf an Speicherplätzen bei der Rückwärts–Methode.<br />

Man kann den Algorithmus RM noch verfeinern zu einem Algorithmus R<strong>M1</strong>. Dabei<br />

wird berücksichtigt, daß in Block (2.2) zu Beginn die Arbeitszeile U bis auf Un+t = 1<br />

nur “System–Nullen” enthält. Eine Addition zu einer System–Null kann bei geeigneter<br />

Buchführung vermieden werden, eine Subtraktion erfordert einen Vorzeichen–Wechsel.<br />

Dies liefert allerdings nur<br />

#(f, f ′ , R<strong>M1</strong>) < 5 · #(f, FUN).<br />

Eine weitere Verfeinerung vom R<strong>M1</strong> zu einem Algorithmus RM2 ist möglich, wenn<br />

man in Block (2.2) fällige Vorzeichen–Wechsel nicht sofort ausführt, sondern erst am<br />

Ende von Block (2.2). Einzelheiten sind in [57] ausführlich beschrieben. Ohne Beweis<br />

geben wir folgendes Ergebnis an.<br />

Proposition 3: Für die Berechnung von f(x) und f ′ (x) mit dem Algorithmus RM2<br />

gilt<br />

#(f, f ′ , RM2) ≤ 4 · #(f, FUN).<br />

Funktionswert f(x) und Ableitungswert f ′ (x) zusammen, berechnet mit RM2, kosten<br />

also höchstens 4–mal soviel wie der Funktionswert alleine.<br />

⊓⊔


3 RÜCKWÄRTS–METHODE 21<br />

Beispiel 3<br />

Aller Erfahrung nach haben Leser, denen Automatisches <strong>Differenzieren</strong> noch neu ist,<br />

Schwierigkeiten mit der Rückwärts–Methode. Wir wollen daher den Algorithmus RM<br />

an einem einfachen Beispiel vorführen. Mit folgendem Schema FUN<br />

y1 = x1<br />

y2 = x2<br />

y3 = y1 · y2<br />

y4 = y3 − 7<br />

y5 = y1 + y2<br />

y6 = y4/y5<br />

f(x) = y6<br />

wird eine Funktion f : D ⊆ IR 2 → IR definiert. Für x = (3, 8) sollen Funktionswert<br />

f(x) und Ableitungswert f ′ (x) berechnet werden.<br />

Gemäß RM Block (1) erzeugen wir<br />

y1 = x1 = 3<br />

y2 = x2 = 8<br />

y3 = y1 · y2 = 24<br />

y4 = y3 − 7 = 17<br />

y5 = y1 + y2 = 11<br />

y6 = y4/y5 = 17<br />

11<br />

Somit ist f(3, 8) = 17<br />

11 und die Werte y1, y2, . . . , y6 stehen zur Verfügung.<br />

Gemäß RM Block (2) setzen wir<br />

U ← [0, 0, 0, 0, 0, 1].<br />

Diese Arbeitszeile U wird nun schrittweise umgeformt. Wir geben alle dazu nötigen<br />

Einzelheiten an.<br />

k = 6 : T6 = D, i = 4, j = 5<br />

S64 ← U6/y5 = 1/11 = 1<br />

11 und U4 ← U4 + S64 = 0 + 1<br />

11<br />

S65 ← S64 · y6 = 1 17 · 11 11<br />

k = 5 : T5 = A, i = 1, j = 2<br />

= 1<br />

11<br />

= 17<br />

121 und U5 ← U5 − S65 = 0 − 17<br />

121<br />

S51 ← U5 = − 17<br />

121 und U1 ← U1 + S51 = 0 + (− 17 17 ) = − 121 121<br />

S52 ← U5 = − 17<br />

121 und U2 ← U2 + S52 = 0 + (− 17 17 ) = − 121 121<br />

k = 4 : T4 = SVC, i = 3<br />

S43 ← U4 = 1<br />

11 und U3 ← U3 + S43 = 0 + 1<br />

11<br />

k = 3 : T3 = M, i = 1, j = 2<br />

= 1<br />

11<br />

S31 ← U3 · y2 = 1 8 · 8 = 11 11 und U1 ← U1 + S31 = − 17 8 + 121 11<br />

S32 ← U3 · y1 = 1 3 · 3 = 11 11 und U2 ← U2 + S32 = − 17 3 + 121 11<br />

= − 17<br />

121<br />

= 71<br />

121<br />

= 16<br />

121


3 RÜCKWÄRTS–METHODE 22<br />

Schließlich erhalten wir f ′ (3, 8) = [U1, U2] =<br />

� �<br />

71 16<br />

, .<br />

121 121


REFERENCES 23<br />

References<br />

[1] Aberth, O.: Precise Numerical Analysis. William C.Brown Publishers, Dubuque,<br />

Iowa, USA, 1988.<br />

[2] Aida-Zade, K.R., Evtushenko, Yu.G.: Bystroe avtomaticheskoe differentsirovanie<br />

na EVM. Matematicheskoe Modelirovanie 1, 1989, 120-131.<br />

[3] Arbenz, P., Gander, W.: Solving nonlinear eigenvalue problems by algorithmic<br />

differentiation. Computing 36, 1986, 205-215.<br />

[4] Bartholomew-Biggs, M.C., Bartholomew-Biggs, L., Christianson, B.: Optimization<br />

and Automatic Differentiation in Ada: Some practical experience. Optimization<br />

Methods and Software 4, 1994, 47-73.<br />

[5] Barton, D.: On Taylor series and stiff equations. ACM Transactions on Mathematical<br />

Software 6, 1980, 280-294.<br />

[6] Barton, D., Willers, I.M., Zahar, R.V.M.: Taylor series methods for ordinary<br />

differential equations - an evaluation. In: Mathematical Software, ed. by J.Rice,<br />

Academic Press, New York, 1971, 369-390.<br />

[7] Baur, W., Strassen, V.: The complexity of partial derivatives. Theoretical Computer<br />

Science 22, 1983, 317-330.<br />

[8] Beck, T.: Automatisches <strong>Differenzieren</strong> von Algorithmen. Dissertation, Technische<br />

Universität München, 1991.<br />

[9] Beck, T.: Automatic differentiation of iterative processes. Journal of Computational<br />

and Applied Mathematics 50, 1994, 109-118.<br />

[10] Beck, T., Fischer, H.: The if-problem in automatic differentiation. Journal of<br />

Computational and Applied Mathematics 50, 1994, 119-131.<br />

[11] Beda, L.M., Korolev, L.N., Sukkikh, N.V., Frolova, T.S.: Programme zum Automatischen<br />

<strong>Differenzieren</strong> für die Maschine BESM, (in Russisch). Technischer<br />

Bericht, Akademie der Wissenschaften der UdSSR, Moskau, 1959.<br />

[12] Berz, M.: Differential algebra - A new tool. In: Proceedings of the 1989 IEEE Particle<br />

Accelerator Conference, March 20-23, 1989, ed. by F.Bennet and J.Kopta,<br />

IEEE, 1989.<br />

[13] Berz, M.: Forward algorithms for higher derivatives in many variables with applications<br />

to beam physics. In [70], 147-156.<br />

[14] Berz, M.: Automatic differentiation as nonarchimedean analysis. In: Computer<br />

Arithmetic and Enclosure Methods, ed. by L.Atanassova and J.Herzberger, Elsevier<br />

(North-Holland), Amsterdam, 1992, 439-450.<br />

[15] Bischof, Ch.H.: Issues in parallel automatic differentiation. In [70], 100-113.


REFERENCES 24<br />

[16] Bischof, Ch., Carle, A., Corliss, G.F., Griewank, A.: ADIFOR: Automatic differentiation<br />

in a source translator environment. Preprint MCS-P288-0192, Argonne<br />

National Laboratory, 1992.<br />

[17] Bischof, Ch., Griewank, A.: ADIFOR: A Fortran system for portable automatic<br />

differentiation. Preprint MCS-P317-0792, Argonne National Laboratory, 1992.<br />

[18] Bischof, Ch., Griewank, A., Juedes, D.: Exploiting parallelism in automatic<br />

differentiation. In: Proceedings of the 1991 International Conference on Supercomputing,<br />

ed. by E.Houstis and Y.Muraoka, ACM Press, 1991, 146-153.<br />

[19] Bohlender, G., Rall, L.B., Ullrich, Ch., Wolff von Gudenberg, J.: PASCAL-<br />

SC: Wirkungsvoll programmieren, kontrolliert rechnen. Bibliographisches Institut,<br />

Zürich, 1986.<br />

[20] Carlile, B.R.: Solution of nonlinear systems of equations on the FPS 64-bit family<br />

of scientific computers using automatic differentiation. In: Proceedings of the<br />

1986 Array Conference, Portland, Oregon, 1986, 142-169.<br />

[21] Christianson, B.: Automatic Hessians by reverse accumulation. IMA Journal of<br />

Numerical Analysis 12, 1992, 135-150.<br />

[22] Christianson, B.: Reverse accumulation and accurate rounding error estimates<br />

for Taylor series coefficients. Optimization Methods and Software 1, 1992, 81-94.<br />

[23] Christianson, B.: Reverse accumulation and attractive fixed points. Optimization<br />

Methods and Software 3, 1994, 311-326.<br />

[24] Corliss, G.F.: Computing narrow inclusions for definite integrals. In: Computerarithmetic,<br />

Scientific Computation and Programming Languages, ed. by<br />

E.Kaucher, U.Kulisch, Ch.Ullrich, Teubner-Verlag, Stuttgart, 1987, 150-169.<br />

[25] Corliss, G.F.: Applications of differentiation arithmetic. In: Reliability in Computing:<br />

The Role of Interval Methods in Scientific Computing, ed. by R.E.Moore,<br />

Academic Press, London, 1988, 127-148.<br />

[26] Corliss, G.F.: Overloading point and interval Taylor operators. In [70], 139-146.<br />

[27] Corliss, G.F., Chang, Y.F.: Solving ordinary differential equations using Taylor<br />

series. ACM Transactions on Mathematical Software 8, 1982, 114-144.<br />

[28] Corliss, G., Rall, L.B.: Automatic generation of Taylor series in PASCAL-SC:<br />

Basic operations and applications to ordinary differential equations. In: Transactions<br />

of the First Army Conference on Applied Mathematics and Computing,<br />

U.S. Army Research Office, Research Triangle Park, NC, 1984, 177-209.<br />

[29] Corliss, G., Rall, L.B.: Adaptive, self-validating numerical quadrature. SIAM<br />

Journal on Scientific and Statistical Computing 8, 1987, 831-847.


REFERENCES 25<br />

[30] Cuyt, A.A.M., Rall, L.B.: Computational implementation of the multivariate<br />

Halley method for solving nonlinear systems of equations. ACM Transactions on<br />

Mathematical Software 11, 1985, 20-36.<br />

[31] Davis, P.H., Pryce, J.D.: A New Implementation of Automatic Differentiation<br />

for Use with Numerical Software. Technical Report AM-87-11, School of Mathematics,<br />

University of Bristol, 1987.<br />

[32] Davis, P.H., Pryce, J.D., Stephens, B.: Recent developments in automatic differentiation.<br />

In: Scientific Software Systems, ed. by J.C.Mason and M.G.Cox,<br />

Chapman and Hall, London, 1990, 153-165.<br />

[33] Davis, P.H., Stephens, B., Corliss, G.F., Krenz, G.S.: Specification of a Preprocessor<br />

for Use with Differentiation Arithmetic. Technical Report AM-88-08,<br />

School of Mathematics, University of Bristol, 1988.<br />

[34] Dixon, L.C.W.: Automatic differentiation and parallel processing in optimisation.<br />

In: Optimization, Parallel Processing and Applications, ed. by<br />

A.Kurzhanski, K.Neumann, D.Pallaschke, (Lecture Notes in Economics and<br />

Mathematical Systems 304), Springer-Verlag, Berlin, 1988, 86-93.<br />

[35] Dixon, L.C.W.: On the impact of automatic differentiation on the relative performance<br />

of parallel truncated Newton and variable metric algorithms. SIAM<br />

Journal on Optimization 1, 1991, 475-486.<br />

[36] Dixon, L.C.W.: Use of automatic differentiation for calculating Hessians and<br />

Newton steps. In [70], 114-125.<br />

[37] Dixon, L.C.W., Maany, Z., Mohseninia, M.: Finite Element Optimisation in ADA<br />

using Automatic Differentiation. Technical Report 205, Numerical Optimisation<br />

Centre, Hatfield Polytechnic, 1988.<br />

[38] Dixon, L.C.W., Maany, Z., Mohseninia, M.: Automatic differentiation of large<br />

sparse systems. Journal of Economic Dynamics and Control 14, 1990, 299-311.<br />

[39] Dixon, L.C.W., Price, R.C.: Truncated Newton method for sparse unconstrained<br />

optimization using automatic differentiation. Journal of Optimization Theory and<br />

Applications 60, 1989, 261-275.<br />

[40] Evtushenko, Yu.G.: Automatic differentiation viewed from optimal control theory.<br />

In [70], 25-30.<br />

[41] Fischer, H.: Some aspects of automatic differentiation. In: Numerical Methods<br />

and Approximation Theory III, ed. by G.V. Milovanović, University of Niˇs, Yugoslavia,<br />

1988, 199-208.<br />

[42] Fischer, H.: Automatic differentiation: Fast method to compute the quadratic<br />

form of Hessian matrix and given vector. Facta Universitatis (Niˇs),<br />

Ser.Math.Inform.3, 1988, 51-59.


REFERENCES 26<br />

[43] Fischer, H.: Automatic differentiation of characterizing sequences. Journal of<br />

Computational and Applied Mathematics 28, 1989, 181-185.<br />

[44] Fischer, H.: Fast method to compute the scalar product of gradient and given<br />

vector. Computing 41, 1989, 261-265.<br />

[45] Fischer, H.: Automatic differentiation: Parallel computation of function, gradient,<br />

and Hessian matrix. Parallel Computing 13, 1990, 101-110.<br />

[46] Fischer, H.: Automatic and parallel generation of gradient and Hessian matrix.<br />

In: System Modelling and Optimization, ed. by H.J.Sebastian and K.Tammer,<br />

(Lecture Notes in Control and Information Sciences 143), Springer-Verlag, Berlin,<br />

1990, 104-114.<br />

[47] Fischer, H.: Automatic differentiation of the vector that solves a parametric linear<br />

system. Journal of Computational and Applied Mathematics 35, 1991, 169-184.<br />

[48] Fischer, H.: Special problems in automatic differentiation. In [70], 43-50.<br />

[49] Fischer, H.: Automatic differentiation: Reduced gradient and reduced Hessian<br />

matrix. Computational Optimization and Applications 1, 1992, 327-344.<br />

[50] Fischer, H.: Automatisches <strong>Differenzieren</strong>. In: Wissenschaftliches Rechnen -<br />

Eine Einführung in das Scientific Computing. edited by J.Herzberger, Akademie-<br />

Verlag, Berlin, 1995, 53-104.<br />

[51] Fischer, H.: Automatic differentiation: The key idea and an illustrative example.<br />

In: Applied Mathematics and Parallel Computing, edited by H.Fischer,<br />

B.Riedmüller, S.Schäffler, Physica-Verlag, Heidelberg, 1996, 121–139.<br />

[52] Automatic Differentiation: Root Problem and Branch Problem. In: Encyclopedia<br />

of Optimization, Kluwer Academic Publishers, 2001, edited by C.A.Floudas,<br />

P.M.Pardalos.<br />

[53] Algorithmic Differentiation with Intervals. In: Inclusion Methods for Nonlinear<br />

Problems, with Applications in Engineering, Economics and Physics, edited by<br />

J.Herzberger, Springer-Verlag, Computing Supplementum 16, 2002, 45–65.<br />

[54] Fischer, H., Flanders, H.: A minimal code list. Theoretical Computer Science<br />

215, 1999, 345–348.<br />

[55] Fischer, H., Hertneck, Ch.: Gradient and Hessian matrix forward with functions<br />

version A in ANSI-C. Technical Report IAMS1995.8TUM, Institut für Angewandte<br />

Mathematik und Statistik, Technische Universität München, 1995.<br />

[56] Fischer, H., Schäffler, S., Warsitz, H.: Parameter estimation in linear regression<br />

models with stationary ARMA(p,q)-errors using automatic differentiation.<br />

Yugoslav Journal of Operations Research 2, 1992, 55-68.<br />

[57] Fischer, H., Warsitz, H.: Complexity of derivatives generated by symbolic differentiation.<br />

In: Computer Algebra in Scientific Computing, Proceedings of the<br />

Third Workshop on Computer Algebra in Scientific Computing, CASC-2000,<br />

Samarkand, October 5–9, 2000, ed. by V.G.Ganzha, E.W.Mayr, E.V.Vorozhtsov,<br />

Springer-Verlag, 2000, 129–144.


REFERENCES 27<br />

[58] Fischer, H.C.: Schnelle automatische Differentiation, Einschlie”sungsmethoden<br />

und Anwendungen. Dissertation, Universität Karlsruhe, 1990.<br />

[59] Fischer, H.C.: Effiziente Berechnung von Ableitungswerten, Gradienten und Taylorkoeffizienten.<br />

In: Jahrbuch Überblicke Mathematik 1992, ed. by S.D. Chatterji,<br />

B. Fuchssteiner, U. Kulisch, R. Liedl, W. Purkert, Vieweg-Verlag, Braunschweig,<br />

1992, 59-73.<br />

[60] Gander, W.: Computermathematik. Birkhäuser Verlag, Basel, 1985.<br />

[61] Garcia, O.: A system for the differentiation of Fortran code and an application<br />

to parameter estimation in forest growth models. In [70], 273-285.<br />

[62] Gay, D.: Automatic differentiation of nonlinear AMPL models. In [70], 61-73.<br />

[63] Gilbert, J.C.: Automatic differentiation and iterative processes. Optimization<br />

Methods and Software 1, 1992, 13-21.<br />

[64] Gilbert, J.C., Le Vey, G., Masse, J.: La différentiation automatique de fonctions<br />

représentées par de programmes et son application à l’analyse d’erreurs. Compte<br />

rendu de la journee différentiation automatique, 11 Octobre 1991, Centre National<br />

d’Etudes Spatiales, Toulouse, France.<br />

[65] Grandinetti, L., Conforti, D.: Numerical comparisons of nonlinear programming<br />

algorithms on serial and vector processors using automatic differentiation. Mathematical<br />

Programming 42, 1988, 375-389.<br />

[66] Greiner, M., Kredler, Ch.: PADMOS und PADFIT - Automatisches <strong>Differenzieren</strong><br />

und nichtlineare Optimierung in MS-DOS. In: Multimedia, Vernetzung<br />

und Software für die Lehre, ed. by K.Dette and P.J.Pahl, Springer-Verlag, Berlin,<br />

1992, 255-264.<br />

[67] Griewank, A.: On Automatic Differentiation. In: Mathematical Programming<br />

- Recent Developments and Applications, ed. by M.Iri and K.Tanabe, Kluwer<br />

Academic Publishers, Dordrecht, Holland, 1989, 83-107.<br />

[68] Griewank, A.: Automatic evaluation of first and higher-derivative vectors. In:<br />

Bifurcation and Chaos: Analysis, Algorithms, Applications, ed. by R.Seydel,<br />

F.W.Schneider, T.Küpper, H.Troger, (International Series of Numerical Mathematics<br />

97), Birkhäuser Verlag, Basel, 1991, 135-148.<br />

[69] Griewank, A.: Achieving logarithmic growth of temporal and spatial complexity<br />

in reverse automatic differentiation. Optimization Methods and Software 1, 1992,<br />

35-54.<br />

[70] Griewank, A., Corliss, G.F. (editors): Automatic Differentiation of Algorithms:<br />

Theory, Implementation, and Application. SIAM, Philadelphia, 1991.<br />

[71] Griewank, A., Juedes, D., Srinivasan, J.: ADOL-C, A Package for the Automatic<br />

Differentiation of Algorithms Written in C/C++. Preprint MCS-P180-1190, Argonne<br />

National Laboratory, 1991.<br />

[72] Hammer, R., Hocks, M., Kulisch, U., Ratz, D.: Numerical Toolbox for Verified<br />

Computing I. Springer-Verlag, Berlin, 1993.


REFERENCES 28<br />

[73] Hillstrom, K.E.: JAKEF - A portable symbolic differentiator of functions given<br />

by algorithms. Technical Report ANL-82-48, Argonne National Laboratory, 1982.<br />

[74] Horwedel, J.E.: GRESS, a preprocessor for sensitivity studies of Fortran programs.<br />

In [70], 243-250.<br />

[75] Horwedel, J.E.: Reverse automatic differentiation of modular FORTRAN programs.<br />

Technical Memorandum ORNL/TM 12050, Computing and Telecommunications<br />

Division, Oak Ridge National Laboratory, 1992.<br />

[76] Huss, R.: An Ada library for automatic evaluation of derivatives. Applied Mathematics<br />

and Computation 35, 1990, 103-123.<br />

[77] Iri, M.: Simultaneous computation of functions, partial derivatives and estimates<br />

of rounding errors, complexity and practicality. Japan Journal of Applied Mathematics<br />

1, 1984, 223-252.<br />

[78] Iri, M.: History of automatic differentiation and rounding error estimation. In<br />

[70], 3-16.<br />

[79] Iri, M., Kubota, K.: Methods of fast automatic differentiation and applications.<br />

Research Memorandum RMI 87-02, Department of Mathematical Engineering<br />

and Instrumentation Physics, Faculty of Engineering, University of Tokyo, 1987.<br />

[80] Iri, M., Kubota, K., Murota, K.: Geometrical/geographical optimization and<br />

fast automatic differentiation. Yugoslav Journal of Operations Research 1, 1991,<br />

121-134.<br />

[81] Iri, M., Tsuchiya, T., Hoshi, M.: Automatic computation of partial derivatives<br />

and rounding error estimates with applications to large-scale systems of nonlinear<br />

equations. Journal of Computational and Applied Mathematics 24, 1988, 365-392.<br />

[82] Jackson, R.H.F., McCormick, G.P.: The polyadic structure of factorable function<br />

tensors with applications to high-order minimization techniques. Journal of<br />

Optimization Theory and Applications 51, 1986, 63-94.<br />

[83] Jackson, R.H.F., McCormick, G.P.: Second-order sensitivity analysis in factorable<br />

programming: theory and applications. Mathematical Programming 41,<br />

1988, 1-27.<br />

[84] Jerrell, M.E.: Function minimization and automatic differentiation using C++.<br />

In: Object-Oriented Programming: Systems, Languages and Applications, ed.<br />

by N.Meyrowitz, special issue of ACM SIGPLAN Notices, Vol.24, No.10, 1989,<br />

169-173.<br />

[85] Jerrell, M.E.: Automatic differentiation using almost any language. ACM<br />

SIGNUM Newsletter, Vol.24, No.1, 1989, 2-9.<br />

[86] Jerrell, M.E.: Automatic differentiation in C++. Journal of Object Oriented<br />

Programming 3, 1990, 17-24.<br />

[87] Juedes, D.W.: A taxonomy of automatic differentiation tools. In [70], 315-329.


REFERENCES 29<br />

[88] Kagiwada, H., Kalaba, R., Rasakhoo, N., Spingarn, K.: Numerical Derivatives<br />

and Nonlinear Analysis. Plenum Press, New York, 1986.<br />

[89] Kalaba, R., Plum, T., Tesfatsion, L.: Automation of nested matrix and derivative<br />

operations. Applied Mathematics and Computation 23, 1987, 243-268.<br />

[90] Kalaba, R., Tesfatsion, L.: Automatic differentiation of functions of derivatives.<br />

Computers and Mathematics with Applications 12A, 1986, 1091-1103.<br />

[91] Kalaba, R., Tesfatsion, L., Wang, J.: A finite algorithm for the exact evaluation<br />

of higher order partial derivatives of functions of many variables. Journal of<br />

Mathematical Analysis and Applications 92, 1983, 552-563.<br />

[92] Kalaba, R., Tishler, A.: A computer program to minimize a function with many<br />

variables using computer evaluated exact high-order derivatives. Applied Mathematics<br />

and Computation 13, 1983, 143-172.<br />

[93] Kalaba, R., Tishler, A.: Generalized Newton algorithm to minimize a function<br />

with many variables using computer-evaluated exact higher-order derivatives.<br />

Journal of Optimzation Theory and Applications 42, 1984, 383-395.<br />

[94] Kalman, D., Lindell, R.: Automatic differentiation in astrodynamical modeling.<br />

In [70], 228-239.<br />

[95] Kedem, G.: Automatic differentiation of computer programs. ACM Transactions<br />

on Mathematical Software 6, 1980, 150-165.<br />

[96] Kelch, R.: Self-validating numerical quadrature. In: Accurate Numerical Algorithms<br />

- A Collection of Research Papers, ed. by Ch.Ullrich and J. Wolff von Gudenberg,<br />

(Research Report ESPRIT, Project 1072, DIAMOND, Vol.1), Springer-<br />

Verlag, Berlin, 1989, 162-202.<br />

[97] Kelevedzhiev, E., Yantcheva, T.: Application of automatic differentiation to the<br />

Hessian matrix evaluation. In: Proceedings of Twenty First Spring Conference<br />

of the Union of Bulgarian Mathematicians, Sofia, April 3-6, 1992, 86-91.<br />

[98] Kim, K.V., Nesterov, Yu.E., Cherkasskiĭ, B.V.: An estimate of the effort in<br />

computing the gradient. Soviet Mathematics Doklady, Vol.29, 1984, 384-387.<br />

[99] Kredler, Ch.: Anwendungen des automatischen <strong>Differenzieren</strong>s in der Strukturoptimierung.<br />

ZAMM 69, 1989, T91-T93.<br />

[100] Kredler, Ch.: Robust sequential active set programming: Theory and implementation<br />

details. Report 227, DFG-Schwerpunkt: Anwendungsbezogene Optimierung<br />

und Steuerung, Technische Universität München, 1990.<br />

[101] Kubota, K., Iri, M.: Estimates of rounding errors with fast automatic differentiation<br />

and interval analysis. Journal of Information Processing 14, 1991, 508-515.<br />

[102] Lawson, C.L.: Automatic differentiation of inverse functions. In [70], 87-94.<br />

[103] Layne, J.D.: Applying automatic differentiation and self-validation numerical<br />

methods in satellite simulations. In [70], 211-217.


REFERENCES 30<br />

[104] Liepelt, M., Schittkowski, K.: PCOMP: A FORTRAN Code for Automatic Differentiation.<br />

Report 254, DFG-Schwerpunkt: Anwendungsbezogene Optimierung<br />

und Steuerung, Universität Bayreuth, 1990.<br />

[105] Lohner, R.: Einschlie”sung der Lösung gewöhnlicher Anfangs- und Randwertaufgaben<br />

und Anwendungen. Dissertation, Universität Karlsruhe, 1988.<br />

[106] Lohner, R.: Verified Computing and Programs in PASCAL-XSC. Habilitationsschrift,<br />

Universität Karlsruhe, 1994.<br />

[107] Maany, Z.: Ada automatic differentiation packages. Technical Report 209, Numerical<br />

Optimisation Centre, Hatfield Polytechnic, 1989.<br />

[108] Matijasevich, Yu.V.: A posteriori interval analysis. In: EUROCAL’85, ed. by Bob<br />

F.Caviness, (Lecture Notes in Computer Science 204), Springer–Verlag, Berlin,<br />

1985, 328-334.<br />

[109] Mazourik, V.: Integration of automatic differentiation into application programs<br />

for PC’s. In [70], 286-293.<br />

[110] McCormick, G.P.: Nonlinear Programming. Wiley, New York, 1983.<br />

[111] Mehlhorn, R., Sachs, G.: A new tool for efficient optimization by automatic<br />

differentiation and program transparency. Optimization Methods and Software<br />

4, 1994, 225-242.<br />

[112] Michelotti, L.: MXYZPTLK: A C++ hacker’s implementation of automatic differentiation.<br />

In [70], 218-227.<br />

[113] Miller, W., Wrathall, C.: Software for Roundoff Analysis of Matrix Algorithms.<br />

Academic Press, New York, 1980.<br />

[114] Moore, R.E.: Methods and Applications of Interval Analysis. SIAM Studies in<br />

Applied Mathematics, Philadelphia, 1979.<br />

[115] Musaev, E.A.: Narrowing of intervals by partial derivatives. Interval Computations<br />

1, 1991, 86-91.<br />

[116] Neidinger, R.D.: An efficient method for the numerical evaluation of partial<br />

derivatives of arbitrary order. ACM Transactions on Mathematical Software 18,<br />

1992, 159-173.<br />

[117] Neumaier, A.: Interval Methods for Systems of Equations. Cambridge University<br />

Press, Cambridge 1990.<br />

[118] Ostrowski, G.M., Wolin, Yu.M., Borisow, W.W.: Über die Berechnung von<br />

Ableitungen. Wissenschaftliche Zeitschrift Technische Hochschule für Chemie,<br />

Leuna-Merseburg, Vol.13, 1971, 382-384.<br />

[119] Pfeiffer, F.W.: Automatic Differentiation in PROSE. ACM SIGNUM Newsletter,<br />

Vol.22, No.1, January 1987, 2-8.


REFERENCES 31<br />

[120] Rall, L.B.: Applications of software for automatic differentiation in numerical<br />

computation. In: Fundamentals of Numerical Computation, ed. by G.Alefeld<br />

and R.D.Grigorieff, (Computing Supplementum 2), Springer-Verlag, Wien, 1980,<br />

141-156.<br />

[121] Rall, L.B.: Automatic Differentiation: Techniques and Applications. (Lecture<br />

Notes in Computer Science 120), Springer-Verlag, Berlin, 1981.<br />

[122] Rall, L.B.: Differentiation and generation of Taylor-coefficients in PASCAL-<br />

SC. In: A New Approach to Scientific Computation, ed. by U.Kulisch and<br />

W.L.Miranker, Academic Press, New York, 1983, 291-309.<br />

[123] Rall, L.B.: Differentiation in PASCAL-SC: type GRADIENT. ACM Transactions<br />

on Mathematical Software 10, 1984, 161-184.<br />

[124] Rall, L.B.: Global optimization using automatic differentiation and interval iteration.<br />

Technical Summary Report 2832, Mathematics Research Center, University<br />

of Wisconsin, Madison, 1985.<br />

[125] Rall, L.B.: Improved interval bounds for ranges of functions. In: Interval Mathematics<br />

1985, ed. by K.Nickel, (Lecture Notes in Computer Science 212), Springer-<br />

Verlag, Berlin, 1986, 143-155.<br />

[126] Rall, L.B.: Optimal implementation of differentiation arithmetic. In: Computerarithmetic,<br />

Scientific Computation and Programming Languages, ed. by<br />

E.Kaucher, U.Kulisch, Ch.Ullrich, Teubner-Verlag, Stuttgart, 1987, 287-295.<br />

[127] Rall, L.B.: Differentiation arithmetics. In: Computer Arithmetic and Self-<br />

Validating Numerical Methods, ed. by Ch.Ullrich, (Notes and Reports in Mathematics<br />

in Science and Engineering, Vol.7), Academic Press, New York, 1990,<br />

73-90.<br />

[128] Rall, L.B.: Point and interval differentiation arithmetics. In [70], 17-24.<br />

[129] Rich, L.C., Hill, D.R.: Automatic differentiation in MATLAB. Applied Numerical<br />

Mathematics 9, 1992, 33-43.<br />

[130] Rosemblun, M.: Automatic Differentiation: Overview and Application to Systems<br />

of Parametrized Nonlinear Equations. Technical Report CRPC-TR92262,<br />

Center for Research on Parallel Computation, Rice University, 1992.<br />

[131] Saarinen, S., Bramley, R.B., Cybenko, G.: Neural networks, backpropagation,<br />

and automatic differentiation. In [70], 31-42.<br />

[132] Sawyer, J.W.: First partial differentiation by computer with an application to<br />

categorial data analysis. The American Statistician 38, 1984, 300-308.<br />

[133] Shiriaev, D.: Reduction of spatial complexity in reverse automatic differentiation<br />

by means of inverted code. In: Computer Arithmetic and Enclosure Methods, ed.<br />

by L.Atanassova and J.Herzberger, Elsevier (North-Holland), Amsterdam, 1992,<br />

475-484.


REFERENCES 32<br />

[134] Shiriaev, D.: Fast Automatic Differentiation for Vector Processors and Reduction<br />

of the Spatial Complexity in a Source Translation Environment. Dissertation,<br />

Universität Karlsruhe, 1993.<br />

[135] Soulié, E.J.: User’s experience with FORTRAN compilers in least squares problems.<br />

In [70], 297-306.<br />

[136] Speelpenning, B.: Compiling fast partial derivatives of functions given by algorithms.<br />

Ph.D.Thesis, Department of Computer Science, University of Illinois,<br />

Urbana-Champaign, 1980.<br />

[137] Stephens, B.R., Pryce, J.D.: DAPRE, A Differentiation Arithmetic System for<br />

FORTRAN. Technical Report ACM-91-3, Royal Military College of Science,<br />

Shrivenham, UK, 1991.<br />

[138] Tesfatsion, L.: Automatic evaluation of higher-order partial derivatives for nonlocal<br />

sensitivity analysis. In [70], 157-165.<br />

[139] Thacker, W.C.: Automatic differentiation from an oceanographer’s perspective.<br />

In [70], 191-201.<br />

[140] van den Heuvel, P., van Hulzen, J.A., Goldmann, V.V.: Automatic generation<br />

of FORTRAN-coded Jacobians and Hessians. In: Proceedings of EUROCAL 87,<br />

ed. by J.Davenport, (Lecture Notes in Computer Science 378), Springer-Verlag,<br />

Berlin, 1987, 120-131.<br />

[141] Van Iwaarden, R.: Automatic differentiation applied to unconstrained nonlinear<br />

optimization with result verification. Interval Computations, No.3, 1993, 41-60.<br />

[142] Volin, Yu.M., Ostrovskii, G.M.: Automatic computation of derivatives with the<br />

use of the multilevel differentiation technique - 1. Algorithmic basis. Computers<br />

and Mathematics with Applications 11, 1985, 1099-1114.<br />

[143] Warner, D.D.: A partial derivative generator. Computing Science Technical Report<br />

No.28, Bell Telephone Laboratories, Murray Hill, N.J., 1975.<br />

[144] Wexler, A.: Automatic evaluation of derivatives. Applied Mathematics and Computation<br />

24, 1987, 19-46.<br />

[145] Wexler, A.: An algorithm for exact evaluation of multivariate functions and their<br />

derivatives to any order. Computational Statistics and Data Analysis 6, 1988, 1-6.<br />

file vorlesung123.tex

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!