Beruflich Dokumente
Kultur Dokumente
- Diplomarbeit -
Humboldt-Universität zu Berlin
Mathematisch-Naturwissenschaftlichen Fakultät II
Institut für Mathematik
Vorwort 2
1 Abstiegsmethoden 3
1.1 Allgemeine Formulierung von Abstiegverfahren . . . 4
1.2 Linesearch-Strategien . . . . . . . . . . . . . . . . . 5
1.3 Konvergenz von Abtiegsverfahren . . . . . . . . . . 6
4 Negative Krümmungen 40
4.1 Richtungen negativer Krümmung . . . . . . . . . . 41
4.2 SHAZ am Beispiel BFGS-Updates . . . . . . . . . . 42
5 Numerische Aspekte 44
5.1 Konvergenz für Gleitpunktarithmetik . . . . . . . . 45
5.1.1 Einführung Gleitpunktarithmetik . . . . . . 45
5.1.2 Beweis der Terminierung . . . . . . . . . . . 46
5.2 SHAZ in der Praxis . . . . . . . . . . . . . . . . . . 48
Literaturverzeichnis 54
1
Vorwort
2
Kapitel 1
Abstiegsmethoden
3
1.1. ALLGEMEINE FORMULIERUNG VON ABSTIEGVERFAHREN 4
min f (x)
x∈Rn
Definition 1.1.1
Seien f : Rn → R und x ∈ Rn . Ein Vektor s ∈ Rn heißt Abstiegs-
richtung (für f in x), falls ein t > 0 existiert mit f (x+αs) < f (x)
für alle α ∈ (0, t].
Lemma 1.1.1
Sei f : Rn → R stetig differenzierbar, s ∈ Rn und x ∈ Rn . Wenn
gilt:
∇f (x)T s < 0,
dann ist der Vektor s Abstiegsrichtung für f in x.
1.2 Linesearch-Strategien
Die Ermittlung einer geeigneten Schrittweite entlang einer
Suchrichtung wird auch Strahlsuche, oder Linesearch genannt.
Hierbei soll die Schrittweite αk (xk , sk ) bestimmt werden, so dass
f (xk + αk sk ) mit möglichst wenig Aufwand möglichst klein wird.
−∇f (xk )T sk
f (xk + αk∗ sk ) ≤ f (xk ) + 2
∇f (xk )T sk
Qksk k
µ ¶2
1 −∇f (xk )T sk
+ Qksk k2 (1.1)
2 Qksk k2
µ ¶2
∗ 1 ∇f (xk )T sk
⇔ f (xk ) − f (xk + α sk ) ≥
2Q ksk k
Es ist also ein Mindestabstieg unter den getroffenen Vorausset-
zungen möglich. Die obere Schranke für die vorkommenden Hesse-
Matritzen ist aber im allgemeinen nicht bekannt. Daher wird die
Effizienz einer Schrittweitenstrategie etwas allgemeiner definiert:
Definition 1.2.1
Eine Schrittweitenstrategie α = α(x; s) heißt effizient, wenn es
zum Startvektor x0 ∈ Rn ein r > 0, r ∈ R gibt mit
µ ¶2
∇f (x)T s
f (x) − f (x + αs) ≥ r ,
ksk
−∇f (x)T s
cos Θ =
k∇f (x)kksk
und wir können insgesamt die folgende Winkelbedingung für alle k
formulieren:
−∇f (x)T s
∃ c > 0, c ∈ R : ≥c (1.2)
k∇f (x)kksk
Verfahren, die die Winkelbedingung erfüllen, nennt man auch gra-
dientenbezogen (gradient related).
Daraus erhalten wir den folgenden:
Satz 1.3.1
Im Abstiegsverfahren Algorithmus 1.1.1 seien alle berechneten
Schrittweiten αk effizient und die Funktion f : Rn → R sei einmal
stetig differenzierbar auf Rn . Außerdem sei die Winkelbedingung
(1.2) erfüllt. Dann gilt:
(a) Jeder Häufungspunkt der Folge xk ist ein stationärer Punkt
von f ,
¤
Die Winkelbedingung (1.2) besagt, dass der Winkel zwischen
∇f (x∗ ) und s gleichmässig von π2 weg beschränkt sein muss. Dies
kann zur Zoutendijk-Bedingung abgeschwächt werden:
Definition 1.3.1
Es sei f : Rn → R, x ∈ R, s ∈ Rn sei eine Abstiegsrichtung. f sei
einmal stetig differenzierbar auf Rn .
Die folgende Bedingung an die Suchrichtungen heißt Zoutendijk-
Bedingung:
X∞ µ ¶2
∇f (xk )sk
= +∞ (1.4)
k=0
k∇f (x k )k · ksk k
Beweis :
Aufgrund der Effizienz der Schrittweiten gilt:
µ ¶2
∇f (xk )T sk
f (xk+1 ) − f (xk ) < −r
ksk k
µ ¶2
2 ∇f (xk )T sk
= −rk∇f (xk )k
k∇f (xk )k · ksk k
1.3. KONVERGENZ VON ABTIEGSVERFAHREN 9
Die Schrittweitenstrategie
SHAZ
10
2.1. DIE SCHRITTWEITENSTRATEGIE SHAZ 11
∇f (xk )T sk < 0
berechnet und somit eine Folge von Iterierten (xk )k generiert, wel-
che f (lokal) minimiert. Hierbei wird jeweils
xk+1 = xk + αk · sk
aufdatiert.
Diese Diplomarbeit befasst sich vor allem mit der Bestimmung der
jeweiligen Schrittweite αk . Diese wird jeweils in einer einzigen Itera-
tion des übergeordneten Abstiegsverfahrens ermittelt. Deshalb ver-
zichten wir im Folgenden auf den Index k. Wir betrachten also die
Minimierung der univariaten Funktion
ared ≥ q · pred
Rückgabewert Bedeutung
0 SHAZ hat terminiert, aktuelles αr ist resul-
tierende Schrittweite.
-1 SHAZ führte einen Zoom-Schritt durch. Wei-
tere Iteration(en) nötig.
-2 SHAZ führte einen Shift nach rechts durch.
Weitere Iteration(en) nötig.
-3 SHAZ führte einen Shift nach rechts durch,
jetzt gilt αr = αup , weitere Iteration(en) nö-
tig.
4 fehlerhafte Eingabe, das Programm wurde
abgebrochen.
2.1. DIE SCHRITTWEITENSTRATEGIE SHAZ 13
αl , αr
Φ(αl ), Φ(αr )
αup .
Auf Grundlage dieser Werte wird nun eine kubische Hermite In-
terpolation durchgeführt. Wir berechnen zunächst o.B.d.A ein um
(αl , Φ(αl )) verschobenes Polynom der Form:
P (0) = 0,
Ṗ (0) = γl ,
Ṗ (αr − αr ) = βr .
b = γl
β r + γl 2(Φ(αr ) − Φ(αl ))
d= − .
(αr − αl )2 (αr − αl )3
b = Φ̇(αl )
Zur Bestimmung des Minimums des Polynoms P (α) leiten wir nach
α ab und setzen die Ableitung gleich 0:
!
Ṗ (α) = b + 2cα + 3dα2 = 0
P̈ (α̌) = 2c + 6dα̌
√
2(−c ± c2 − 3bd) für d ≥ 0
= 2c + √
2(−c ∓ c2 − 3bd) für d < 0
√
± c2 − 3bd für d ≥ 0
= √
∓ c2 − 3bd für d < 0
P(α)
fahren daher mit einem Shift nach rechts fort. Hierbei wird αl mit
dem Wert von αr aufdatiert, und αr wird zu min{αr + mδ, αup },
mit δ = αr − αl und reeller Konstante m > 1. (Wir haben mit
m = 3 gearbeitet). Die Linesearch gibt dann den Rückgabewert -2
2.1. DIE SCHRITTWEITENSTRATEGIE SHAZ 16
aus.
Nun betrachten wir den Fall, dass P (α) ein lokales Minimum
in α̌ besitzt. Da wir P (α) bei der Berechnung um αl verschoben
haben, liegt das tatsächliche Minimum also bei αmin = αl + α̌. Um
eine Auslöschung in Zähler oder Nenner auszuschließen, berechnen
wir dieses αmin je nach Vorzeichen des Koeffizienten c wie folgt:
−b
√ für c ≥ 0
c + c2 − 3bd
αmin = αl + √
2
c − 3bd − c für c < 0.
3d
Liegt αmin außerhalb des Intervalls [αl , αup ], so liegt wie oben im
Fall für kein existierendes Minimum für wachsende α ein monotoner
Abstieg vor, (siehe Abbildung 2.2) und wir fahren mit dem gleichen
Shift nach rechts fort.
Ist das Abbruchkriterium (2.3) aber erfüllt, so wird nur noch eine
2.1. DIE SCHRITTWEITENSTRATEGIE SHAZ 18
γr < γ l ,
2.2 Algorithmus
Der Übersicht halber benutzen wir im Algorithmus die Funktion
descent_test(β, γ). Diese gibt TRUE zurück, falls
3
(γ < 0) ∧ (β > (1 + )γ)
q
erfüllt ist, ansonsten wird FALSE zurückgegeben. Zusätzlich soll-
te vom Benutzer ein Zähler deklariert werden, der die Anzahl der
Shifts nach rechts zählt und bei einer gewählten Oberschranke ab-
bricht. Das aktuelle αr ist dann die resultierende Schrittweite.
1. Input:
αl , αr , Φ(αl ), Φ(αr ),
DΦ(αl ) = [βl , γl ],
DΦ(αr ) = [βr , γr ],
αup
mit αl ≤ αr ≤ αup
und descent_test(βl , γl ) = TRUE.
2. If αr = αl
3. If αr > αup
Set αr = αup ;
Else
Set αmin = −∞
2.2. ALGORITHMUS 20
7. Fallunterscheidung:
21
3.1. KONVERGENZ DER SCHRITTWEITENSTRATEGIE SHAZ 22
Definition 3.1.2
Sei D ⊂ R, x0 ∈ D und f : D → R Lipschitz-stetig in einer
Umgebung von x. Ωf bezeichne die Menge der Punkte, an denen f
nicht differenzierbar ist. Dann heißt
= co{1, −1}
= [−1, 1]
P (0) = 0,
und Steigungen
Ṗ (0) < 0,
Ṗ (αr ) < 0.
Beweis :
d
Ṗ (α) = P (α) = b + 2cα + 3dα2 .
dα
Die Koeffizienten lassen sich wie folgt darstellen:
b = Ṗ (0)
bα + 2cα2 + 3dα3 = 0
2c 2 b
⇔ dα3 = − α − α.
3 3
Setzen wir diesen Term für dα3 in (3.1) ein, so können wir den ku-
bischen Term eliminieren und erhalten das quadratische Polynom:
α
Q(α) = (2b + cα)
3
Q(α) und P (α) nehmen nach Konstruktion von Q(α) in allen
stationären Punkten von P (α) den gleichen Wert an. Wir zeigen
im Folgenden, dass Q(α) durch 1q P (αr ) nach unten beschränkt
ist, also kein stationärer Punkt von P (α) unterhalb von 1q P (αr )
existieren kann.
αr
Q(αr ) = (2b + cαr )
3
wir setzen für b und c die Darstellung (3.2) ein und erhalten:
³ ´α
r
Q(αr ) = 2Ṗ (0) + 3Dm − Ṗ (αr ) − 2Ṗ (0)
3
à !
Ṗ (αr )
= Dm − αr . (3.3)
3
1
Q(α) ≥ Dm αr = P (αr ) ≥ · P (αr ).
q
Die Behauptung ist also für die Fälle (1) und (2) bewiesen.
Für den dritten Fall ist c positiv und α̃ ∈ (0, αr ). Es gilt al-
so α̃ = −b
c
< αr ⇔ −b < αr c.
Wir können dann abschätzen:
−b2 bαr −αr2 c
Q(α̃) = ≥ ≥
3c
|{z} 3 3
<0
Für c setzen wir nun die Darstellung (3.2) ein und erhalten:
1
= · Dm · αr
q
1
= · P (αr )
q
Für alle drei Fälle erhalten wir also, dass Q(α) im Intervall [0, αr ]
durch 1q · P (αr ) nach unten beschränkt ist. Da für alle stationären
Punkte αs von P (α) gilt P (αs ) = Q(αs ) folgt daraus, dass P (α)
kein freies Minimum hat, das kleiner als 1q · P (αr ) ist. Somit ist die
Behauptung bewiesen. ¤
3.1. KONVERGENZ DER SCHRITTWEITENSTRATEGIE SHAZ 28
3.1.2 Voraussetzungen
Wir versuchen die Voraussetzungen an Φ(α) möglichst gering zu
halten. Die folgenden Punkte, fordern wir für den sich anschließen-
den Konvergenzbeweis:
• αup < ∞ wird als Input vorgegeben oder Φ(α) > Φ(0) für al-
le hinreichend großen α. Dann landet der Algorithmus, wenn
vorher die Abbruchbedingung noch nicht erfüllt wurde, ir-
gendwann in Fall (c). Hier wird dann αup mit einem reellen
Wert kleiner unendlich aufdatiert.
Zusätzlich sei Anzahl der Rechts-Shifts wird durch eine Obere
Schranke z ∈ N begrenzt.
3.1.3 Konvergenzbeweis
Satz 3.1.4
Unter den Voraussetzungen (3.1.2) terminiert die Line-Search
SHAZ nach endlich vielen Schritten.
Beweis :
Verfeinerungen:
αr ∗ = lim (αr )k ≥ αl
k→∞
existiert.
(i) αr ∗ = αl
(ii) αr ∗ > αl
[βr , γr ] ⊂ [βl − δ, γl + δ]
⇒ βr ≥ βl − δ (3.4)
und Dm ∈ [βl − δ, γl + δ]
⇒ D m ≤ γl + δ (3.5)
3
βl > (1 + )γl . (3.6)
q
Wir wählen δ folgendermassen:
βl − (1 + 3q )γl
δ < min{−γl , 3 }. (3.7)
4+ q
3.1. KONVERGENZ DER SCHRITTWEITENSTRATEGIE SHAZ 31
βl − (1 + 3q )γl
δ< 3
4+ q
3 3
⇔ (4 + )δ < βl − (1 + )γl
q q
1 3
⇔ 3(1 + )δ + δ < βl − (1 + )γl
q q
1 3
⇔ 3(1 + )δ < βl − δ −(1 + )γl
q | {z } q
≤ βr
(3.4)
1 3
⇒ 3(1 + )δ < βr − (1 + )γl
q q
βr − (1 + 3q )γl
⇔δ<
3(1 + 1q )
βr + 2γl
⇔δ< − γl
3(1 + 1q )
βr + 2
⇔ γl + δ <
3(1 + 1q )
βr + 2γl
Dm < . (3.8)
3(1 + 1q )
βr ≤ γl + δ < 0.
3.1. KONVERGENZ DER SCHRITTWEITENSTRATEGIE SHAZ 32
Dann gilt:
P̂ (0) = 0 und
1
⇔ P (αl + α̂min ) − P (αl ) ≥ (P (αr ) − P (αl ))
q
⇔ ared ≥ q · pred
3.1. KONVERGENZ DER SCHRITTWEITENSTRATEGIE SHAZ 33
Das bedeutet, dass die Bedingung für eine Verfeinerung nicht mehr
erfüllt ist.
= Φ(αl ) − Φ(α∗ )
¯ 3
Pk (α) ≤ bα + c̄α2 + dα
¯ k ) α2
≤ bα + (c̄ + dα
| {z r }
=c̃>0
≤ bα + c̃α2
−b
Der rechte quadratische Term hat sein Minimum bei α̃ = und
2c̃
wir erhalten:
−b2 b2
= +
2c̃ 4c̃
−b2
= <0
4c̃
Die Aussage Pk (α) < 0 für alle k bildet einen Widerspruch zur An-
nahme (3.9) Φ(αl ) − limk→∞ Pk (α∗ ) ≤ 0, da wir o.B.d.A Φ(αl ) = 0
gesetzt hatten.
Wir haben nun also die Annahme, dass es eine unendliche Folge
von Verfeinerungen gibt, vollständig widerlegt. ¤
wobei
ϕ = ∠(∇f (x), s)
µ ¶
−∇f (x)T s
= arccos
k∇f (x)kksk
Satz 3.2.1
Sei Φ(α) := f (x + αs) stetig differenzierbar, mit lokal Lipschitz-
stetiger Ableitung. 0 6= ksk < ∞, αl0 = 0 und Φ̇(0) < 0. Die
Schrittweiten-Strategie SHAZ effizient, wenn die Terminierung oh-
ne die Oberschranken αup und z zu Stande gekommen ist.
Zu zeigen ist:
≥Φ(αl ) − Φ(αr )
µ ¶2
! ∇f (x)T s
Φ(αl ) − Φ(αr ) ≥ r
ksk
Im Folgenden bezeichne Φ̇ die Richtungsableitung von Φ(α) :=
f (x + αs) nach α, also:
d
Φ̇(α) = f (x + αs) = ∇f (x + αs)T s
dα
Außerdem gilt für das Hermite Polynom PH (α) insbesondere an der
Stützstelle αl :
PH (αl ) = Φ(αl )
b = Φ̇(αl ) und
Φ(αr ) − Φ(αl )
Φ̇(ξ) =
αr − αl
Da zusätzlich bei zulässiger Schrittweite Φ̇(αr ) > Φ̇(αl ) können wir
den Koeffizienten c folgendermaßen Abschätzen:
3Φ̇(ξ) − 3Φ̇(αl )
c≤
αr − αl
¯ ¯
¯ 3(Φ̇(ξ) − Φ̇(α )) ¯
¯ l ¯
≤¯ ¯
¯ αr − αl ¯
Wenn P (αmin ) kleiner oder gleich der rechten Seite (RS) der Unglei-
chung für alle α ist, so gilt das auch für das Minimum der rechten
Seite. Da Q > 0, beschreibt (RS) als quadratisches Polynom eine
nach oben geöffnete Parabel. Ein stationärer Punkt ist also gleich-
zeitig das Minimum von (RS). Zur Bestimmung dieses Minimums
leiten wir (RS) nach α ab:
˙ = Φ̇(αl ) + 2Qksk2 (α − αl )
(RS)
Wir setzen diese Ableitung = 0 zur Ermittlung des stationären
Punktes:
0 =Φ̇(αl ) + 2Q · ksk2 (α − αl )
−Φ̇(αl )
⇔ α − αl =
2Qksk2
−∇f (x + αl s)T s
⇔ α − αl =
2Qksk2
3.2. EFFIZIENZ DES SCHRITTWEITENALGORITHMUS 39
µ ¶
T −∇f (x + αl s)T s
P (αmin ) ≤ Φ(αl ) + ∇f (x + αl s) s ·
2Qksk2
µ ¶2
2 ∇f (x + αl s)T s
+Qksk
2Qksk2
¡ ¢2 ¡ ¢2
∇f (x + αl s)T s 1 ∇f (x + αl s)T s
⇔ P (αmin ) ≤ Φ(αl ) − +
Qksk2 4 Qksk2
¡ ¢2
3 ∇f (x + αl s)T s
⇔ P (αmin ) − Φ(αl ) ≤ −
4 Qksk2
µ ¶2
∇f (x + αl s)T s
⇔ Φ(αl ) − P (αmin ) ≥ r
ksk
3
mit r = > 0.
4Q
¤
Da wir nun Konvergenz und Effizienz sichergestellt haben möch-
ten wir im nächsten Kapitel eine speziellere Eigenschaft von SHAZ
untersuchen und widmen und nun Suchrichtungen mit negativer
Krümmung.
Kapitel 4
Negative Krümmungen
40
4.1. RICHTUNGEN NEGATIVER KRÜMMUNG 41
sT ∇2 f (x)s < 0.
∇f (x∗ ) = 0
und
∇2 f (x∗ ) ist positiv semidefinit.
Konvergenzbeweise und Methoden hierzu finden sich auch bei
Gould et al. [4], Moré and Sorensen [6] und McCormick [7].
Für Abstiegsrichtungen mit negativer Krümmung verringert
sich lokal nicht nur der Wert der Zielfunktion (wie bei jeder
4.2. SHAZ AM BEISPIEL BFGS-UPDATES 42
• yk = ∇f (xk+1 ) − ∇f (xk )
Bk sk sTk Bk yk ykT
• Bk+1 = Bk − + T
sTk Bk sk yk sk
Dann gilt:
= ∇f (xk + αr sk )T sk − ∇f (xk + αl sk )T sk
= Φ̇(αr ) − Φ̇(αl )
≥0
Auf diese Weise ist y T s > 0 immer erfüllt. Außerdem ist die
Möglichkeit gross, den Richtungen negativer Krümmung schnell zu
entkommen, da der hier mögliche Abstieg durch die Rechts-Shifts
ausgenutzt wird.
Numerische Aspekte
44
5.1. KONVERGENZ FÜR GLEITPUNKTARITHMETIK 45
x = 0 oder x = ±0.d1 d2 . . . dl · be .
Hierbei heißen
b ∈ N, b > 1 die Basis,
m := 0.d1 d2 , . . . , dl die Mantisse (zur Basis b) und
e ∈ Z, emin ≤ e ≤ emax der Exponent.
Die Ziffern di sind ganze Zahlen zwischen 0 und b-1, l heißt
Mantissenlänge.
1.00 . . . 01 · b0 = 1 + b(1−l) .
Haben wir nun zwei Zahlen x und y mit y < 12 ulp(x) oder y < 12 εm ,
so passiert bei der Addition folgendes:
¤(x + y) = x.
x = 0.234 · 103
y = 0.234 · 10−1 = ¤(y) 6= 0
¤(x + y) = ¤(0.2340234 · 103 ) = 0.234 · 103 = x.
(i) α∗ = αl
(ii)α∗ > αl
Für Fall (i) nähern sich die αr k für k → ∞ also αl an. Die
Abstände αl − αrk gehen dabei gegen Null. Wir kommen also für k
hinreichend gross in den Bereich, dass αl − αrk < ε und da wir uns
in den Gleitpunktzahlen bewegen, heißt das, dass αl = αrk . Der
Algorithmus terminiert also in Schritt 2.
Für Fall (ii) betrachten wir die Folge (αr k )k . Mit k → ∞ gehen
die Abstände αr k − αr k+1 gegen 0. Daraus folgt, dass wir für k
gross genug einen Bereich von Gleitpunktzahlen erreichen, in dem
αr k − αr k+1 < ε und damit αr k = αr k+1 . Da αr k+1 gleich dem
Minimalpunkt αmin k aus dem vorherigen Schritt ist, gilt zugleich:
insgesamt können wir bei rund drei Viertel der Beispielfälle fest-
stellen, dass SHAZ gleich gut, oder besser als zoom reduziert. In
5.2. SHAZ IN DER PRAXIS 49
rund 30 Prozent ist SHAZ sogar deutlich besser als zoom und nur
ca. ein viertel der Suchrichtungen ergaben bei zoom eine bessere
Reduktion.
Diese beiden Schrittweitenstrategien wurden von den Endbenut-
zern auch in der Praxis beide benutzt und ergänzend eingesetzt.
Das lässt sich anhand der Test-Ergebnisse auch empfehlen. Darüber
hinaus bietet Zoom bei monoton fallenden Merit-Funktionen viel
Abstieg, was den gesamten Optimierungsalgorithmus beschleuni-
gen kann. Im Anhang befinden sich detaillierte Angaben über die
Reduktion der einzelnen Suchrichtungen, sowie der Quellcode von
SHAZ.
# include <stdlib.h>
# include <math.h>
# ifndef MATHUTILS_H
# define MATHUTLIS_H
# ifndef NAN
# define NAN (0.0/0.0)
# endif
# ifndef INFINITY
# define INFINITY (1.0/0.0)
# endif
# endif
static int searchstep(double *al, double *ar, double *vall, double *valr,
double *slopel, double *sloper, double *aup)
{
// we keep 0 <= *al < *ar, *al may grow
// vall may decrease but not grow
// we keep always slopel < 0
// decreasing bound
//slopel and sloper are array with two elements each
//slopel[0] = minimal element of generalized derivative at al
//slopel[1] = maximal element of generalized derivative at al
//sloper accordingly
double t,avgder, delder, slope, b,c,d,delta, pred, ared, deltar, one =1.0;
double frac = 0.5; // Minimal ared/pred ratio for acceptance
double fact=3; // Controls size of shifts to the right
// known and need to be evaluated by the calling program for next call.
//
// Hermite Interpolation to determine the coeffcients of the cubic
if( *vall - ared > *vall - pred*frac) // ared is not acceptable relative to pred;
{
if(ared <=0) *aup = *ar; // No actual reduction at all
*ar = min(*al+min(t,fact*delta),*aup); // try minimizer as new *ar
if(delta<t && valr < vall) // if *ar on way down make it to *al
{ *al += delta; *vall = *valr;
slopel[0] = sloper[0];
slopel[1] = sloper[1];
printf(” second shift right \n”); }
if (*ar == *al) return 0;
return -1; //keep going
}
// Now we have an acceptable *ar
else if( (sloper[1] <= slopel[1]) && (*ar<*aup))// *ar is still promising
{ *al = *ar; *vall = *valr;
slopel[0] = sloper[0];
slopel[1] = sloper[1]; // so we shift more
*ar = min(*al + fact*delta,*aup);
printf(” third shift right \n”);
if (*ar == *al) return 0;
return -2; //recommence in same direction
}
else
{
if( sloper[1] < slopel[1]) printf(” neg slope ”); // bad for secant
printf(”search ended with ared/pred = %e \n and curvatures %e %e \n”
, ared/pred, c+3*d*delta, (sloper[0]-slopel[1])*deltar);
return 0;
}
}
}
54
Danksagung
Ich möchte mich für die spannende Aufgabenstellung und die lehr-
reiche und geduldige Betreuung von Prof. Dr. Andreas Griewank
bedanken, der mir vielfach mit Rat und Tat zur Seite stand.
Mein Dank gilt auch all denen, die mich während der Ent-
stehungszeit dieser Arbeit begleitet und unterstützt haben,
besonders Katharina und meinen Eltern.
55
Ich erkläre, dass ich die vorliegende Arbeit selbständig und nur
unter Verwendung der angegebenen Quellen und Hilfsmittel ange-
fertigt habe.