2. Nullstellensuche - Umwelt

Werbung
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
2. Nullstellensuche
Eines der ältesten numerischen Probleme stellt die Bestimmung der Nullstellen einer Funktion f(x) = 0 dar.
y
y
y=c0+c1·x
x0
x
y=c0+c1·x+c2·x2
x1
x2
x
y
y
y=Σci·xi
x1 x2
x3
x
y=c0-x·sin(x)
x
Für eine Gerade ist das Problem trivial, die Wurzel einer quadratischen Gleichungen lässt sich analytisch berechnen, gleiches gilt auch noch für kubische
Parabeln.
Für Polynome höherer Ordnung oder sog. transzendente Gleichungen existieren keine geschlossenen Lösungen.
2. Nullstellenstuche
1
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
2.1 Intervallschachtellung
Das einfachste Verfahren zur Nullstellenbestimmung stellt das Intervallschachtellungsverfahren (Bisektion) dar. Es liefert für ein Intervall [a,b] die
Lösung von f(x) = 0, wenn die Funktion im Intervall stetig ist und die Funktionswerte f(a) und f(b) entgegen gesetzte Vorzeichen besitzen.
Zu Beginn der Approximation wird a1= a und b1= b gesetzt und der Mittelpunkt des Intervalls [a1, b1] berechnet.
x1 = a1 +
b1 − a1
2
Ist f(x1) = 0, ist die Nullstelle mit x0= x1 im Intervall gefunden.
Wenn nicht, wird geprüft, ob die Funktionswerte f(a1) und f(x1) ungleiche
Vorzeichen haben. Dann liegt die gesucht Nullstelle im Intervall [a1, x1].
Andernfalls liegt die Nullstelle im Intervall [x1, b1].
Das Verfahren wird so lange fortgesetzt, bis die Nullstelle x0 hinreichend
genau durch die Näherung xn approximiert wird.
2. Nullstellenstuche
2
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
IntervallSchachtellungsverfahren:
y
y=f(x)
f(b1)
f(x1)
a1=a
x2
x
x3
f(a1)
x1
b1=b
f(x2)
Ein Intervall [ai+1, bi+1], das eine Nullstelle der Funktion f(x) enthält, wird aus
einem Intervall [ai, bi], konstruiert mit
xi +1 = ai +
bi − ai
2
Dann gilt ai+1= ai und bi+1= xi , wenn f(ai)·f(xi) < 0 ist, andernfalls wird ai+1= xi
und bi+1= bi gesetzt.
2. Nullstellenstuche
3
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Die Approximation wird nach n Schritten abgebrochen, wenn die Länge des
Intervalls [an, bn] kleiner ist als ein vorgegebener Toleranzwert Tol
an − bn < Tol
Vor Beginn der Bisektion muss ein Intervall [a, b] gefunden werden, für das
f(a)·f(b) < 0 zutrifft. Bei jedem Iterationsschritt n wird die Intervalllänge
halbiert. Daraus folgt mit
n
1
  ⋅ (b − a ) = xn − xn −1 < Tol
2
die Anzahl der benötigten Schritte n für eine vorgegebene Toleranz
b−a
b−a
n > log 2 
 ≈ 1,443 ⋅ ln

 Tol 
 Tol 
mit dem natürlichen Logarithmus. Die Anzahl der Iterationen ist bei vorgegebener Genauigkeit abhängig von der Länge des Startintervalls.
2. Nullstellenstuche
4
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Vorteile des Intervallschachtellungsverfahrens:
• Es führt theoretisch immer zu einer Lösung
• Die für eine vorgegebene Genauigkeit notwendige Anzahl von Schritten
kann vorab berechnet werden
Nachteile:
• Es konvergiert langsam (eine Binärstelle je Iterationsschritt)
• Gute Näherungen können im Verlauf der Iteration wieder verloren gehen
Es wird daher oft als zuverlässige Startroutine für effizientere Verfahren benutzt.
Obwohl das Verfahren grundsätzlich konvergiert, sollte in einer Anwendung
eine max. zulässige Anzahl von Iterationsschritten definiert werden, da es bei
kleinen Intervalllängen aufgrund von Rundungsfehlern zu Endlosschleifen
kommen kann. Weiterhin ist zu prüfen, ob der Mittelpunkt eines Intervalls
bereits die gesuchte Nullstelle darstellt.
2. Nullstellenstuche
5
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Beispiel: y = x3 – 4x2 – 11x + 30 = 0
Startintervall:
Nullstellen: x1=-3; x2=2; x3=5;
Genauigkeit:
Anzahl der n > log  b − a  ≈ 1,443 ⋅ ln 3 − 0  ≈ 8,2
2
Iterationen:
 Tol 
 0,01 
y = x3 – 4x2 – 11x + 30 = 0
xi
0.01
Start
ai
bi
1
0,000
3,000
1,500 7,875 30,000 -12,000 a2 = x1
2
1,500
3,000
2,250 -3,609 7,875 -12,000 b3 = x2
3
1,500
2,250
1,875 1,904 7,875
-3,609 a4 = x3
4
1,875
2,250
2,063 -0,929 1,904
-3,609 a4 = x3
...
...
...
8
1,993
2,016
2,004 -0,060 0,113
-0,239 b9 = x8
9
1,993
2,004
1,998 0,015
-0,060
...
f(ai)
3
i
...
f(xi)
0
...
0,113
f(bi)
...
Bem.
...
Nach 9 Iterationsschritten wird mit x8-x9 = 2,004-1,998 = 0,006 < Tol die erforderliche Genauigkeit erreicht.
2. Nullstellenstuche
6
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Flussdiagramm
Intervallschachtellung
Start
Deklarationen
a, b, Tol, max
ja
f(a)*f(b)>0
nein
Nullstelle nicht
im Intervall
Mittelpunkt
x=a+(b-a)/2
ja
f(x)=0
nein
f(x)*f(a)<0
nein
a=x
ja
b=x
ja
b-a<Tol
ja
Nullstelle ist
Mittelpunkt
Nullstelle
gefunden
nein
i<max
nein
Keine
Konvergenz
Stop
2. Nullstellenstuche
7
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Sub Bisektion( )
'Nullstellensuche nach dem Intervallschachtellungsverfahren
'Autor: T. Preussler
'Deklarationen
Dim a, b, Tol, x, dx
Dim i, max
'Genauigkeit
Tol = Val(Slide20.txtTol.Value)
max = 1000
'Startintervall
a = Val(Slide20.txta.Value)
'Anfangswert
b = Val(Slide20.txtb.Value)
'Endwert
If y(a) * y(b) > 0 Then
MsgBox "Keine oder mehrere Nullstelle im Intervall"
Exit Sub
End If
'Schleife
For i = 1 To max
x = a + (b - a) / 2
'Mittelpunkt
'Nullstelle ist Mittelpunkt
If y(x) = 0 Then
Text = "Die Nullstelle ist Mittelpunkt" + Str(x)
MsgBox Text
Exit Sub
End If
2. Nullstellenstuche
'Auswahl des Suchintervalls
If y(x) * y(a) < 0 Then
b=x
Else
a=x
End If
'Nullstelle gefunden
If Abs(b - a )< Tol Then
Text = "Die Nullstelle wird nach " + Str(i) + " Schritten
mit " + Str(x) + " ermittelt"
MsgBox Text
Exit Sub
Else
Text = "i =" + Str(i) + " x =" + Str(x)
MsgBox Text
End If
Next i
MsgBox "Keine Konvergenz"
End Sub
Function y(x)
'Funktionswert einer kub. Parabel
y = 30 - 11 * x - 4 * x ^ 2 + x ^ 3
End Function
8
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
2.2 Sekantenverfahren
Beim Sekantenverfahren geht man ebenfalls von einem Startintervall [a, b]
aus und setzt x0= a und x1= b. Durch die Punkte P0(x0, f(x0)) und P1(x1, f(x1))
der Funktion f(x) wird eine Gerade konstruiert. Der Schnittpunkt x2 dieser
Sekante mit der x-Achse stellt die erste Näherung der gesuchten Nullstelle
dar.
Im nächsten Schritt wird die Sekante durch die Punkte P1(x1, f(x1)) und
P2(x2, f(x2)) gelegt und der Schnittpunkt x3 mit der x-Achse als verbesserte
Näherung der Nullstelle berechnet.
Das Verfahren wird so lange fortgesetzt, bis die Nullstelle hinreichend genau
durch die Näherung xn approximiert wird.
Im allgemeinen liegt beim Sekantenverfahren der Schnittpunkt der Sekante
mit der x-Achse näher an der gesuchten Nullstelle als beim Intervallschachtellungsverfahren und konvergiert daher besser.
2. Nullstellenstuche
9
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Sekantenverfahren:
y
f(x1)
x0=a
x2
x3 x5
x4
f(x4)
x1=b
x
f(x3)
f(x2)
f(x0)
y=f(x)
Kennzeichen des Verfahrens ist, dass die Sekanten immer mit den direkt auf
einander folgenden Punkten Pi und Pi+1 gebildet werden, wobei ein Intervall
die Nullstelle notwendigerweise nicht enthalten muss.
2. Nullstellenstuche
10
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Ausgehend von einem Startintervall [a, b] wird x0= a und x1= b gesetzt. Mit
der Geradengleichung (y-y1)/(x-x1) = (y1-y0)/(x1-x0) durch die Punkte P0 und
P1 folgt die Gleichung der Sekante
y = f ( x1 ) +
f ( x1 ) − f ( x0 )
⋅ ( x − x1 )
( x1 − x0 )
Den Schnittpunkt der Sekante mit der x-Achse erhält man aus
0 = f ( x1 ) +
f ( x1 ) − f ( x0 )
⋅ ( x2 − x1 )
( x1 − x0 )
und nach x2 aufgelöst
x2 = x1 −
f ( x1 ) ⋅ ( x1 − x0 )
f ( x1 ) − f ( x0 )
ergibt sich die erste Näherung der Nullstelle und damit die allgemeine Berechnungsvorschrift für das Sekantenverfahren:
2. Nullstellenstuche
11
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Die Approximation xi+1 einer Nullstelle der Funktion f(x) ergibt sich mit den
Näherungen xi und xi-1 nach der Gleichung
xi +1 = xi −
f ( xi ) ⋅ ( xi − xi −1 )
f ( xi ) − f ( xi −1 )
Das Startintervall muss beim Sekantenverfahren nicht die Nullstelle enthalten.
y
y
f(x2)
f(x )
f(x )
1
2
x4
x0=a
x1=b x3
f(x1)
f(x0)
y=f(x)
x0=a
f(x3)
x2
x
x2
x1=b
x
f(x0)
y=f(x)
Allerdings konvergiert das Sekantenverfahren nicht immer. Bei Konvergenz
ist das Verfahren jedoch wesentlich schneller als die Intervallschachtellung.
2. Nullstellenstuche
12
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Auch beim Sekantenverfahren wird die Approximation abgebrochen, wenn
die Länge des Intervalls die vorgegebene Genauigkeit erreicht hat.
Startintervall:
Genauigkeit:
Beispiele: y=x^3–4x^2–11x+30=0
-4
4
0.01
Start
60
40
i
xi-1
xi
f(xi-1)
f(xi)
xi+1
20
1
0
3,000
30,000
-12,000
2,143
2
3
2,143
-12
-2,099
1,961
3
2,143
1,961
-2,099
0,586
2,001
4
1,961
2,001
0,586
-0,011
2,000
y
0
-4
-2
0
2
4
6
-20
-40
-60
x
Gegenüber der Intervallschachtellung kommt man beim Sekantenverfahren
mit ca. der Hälfte der Iterationsschritte aus.
2. Nullstellenstuche
13
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
2.3 Newton´sches Verfahren
Bei den bisher behandelten Verfahren werden die Nullstelle einer Funktion
berechnet durch Geraden, die den Verlauf der Kurve f(x) approximieren.
Die beste Näherung einer Funktion durch eine Gerade stellt die Tangente in
einem Punkt der Kurve dar. Das Newtonsche Verfahren verwendet daher zur
Nullstellenbestimmung Tangenten der Funktion.
Vorausgesetzt, die Funktion f(x) ist in der Umgebung einer Startnäherung x1
der Nullstelle differenzierbar, erhält man die Gleichung der Tangente durch
y = f ( x1 ) + f ' ( x1 ) ⋅ ( x − x1 )
mit der Ableitung f´(x) der Funktion f(x). Nullsetzen und auflösen liefert
eine verbesserte Näherung der gesuchten Nullstelle
x2 = x1 −
mit f´(x1) ≠ 0.
2. Nullstellenstuche
f ( x1 )
f ' ( x1 )
14
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Newtonsche
Verfahren:
y
f(x2)
y=f(x)
f(x4)
x1 x3
x4
x5
f(x1)
x2
x
f(x3)
Die Approximation xi+1 einer Nullstelle der Funktion f(x) errechnet sich aus
der Näherung xi mit
xi +1 = xi −
f ( xi )
f ' ( xi )
Das Verfahren konvergiert nur, wenn f´(xi) ≠ 0 ist. Wenn es konvergiert, dann
jedoch wesentlich schneller als die anderen Verfahren.
2. Nullstellenstuche
15
Umwelt-Campus Birkenfeld
der Fachhochschule Trier
Numerische Mathematik
Prof. Dr.-Ing. T. Preussler
Man kann zeigen, das sich im Idealfall mit jedem Schritt die Anzahl der
signifikanten Stellen verdoppelt, d. h. die Genauigkeit wächst quadratisch!
Nachteilig beim Newtonschen Verfahren ist aber, dass neben der Funktion
f(x) auch deren erste Ableitung f´(x) bekannt sein muss.
Startnäherung:
Genauigkeit:
Beispiel:
y = x3 – 4x2 – 11x + 30 = 0
Ableitung: y´ = 3x2 – 8x – 11
Nullstellen: x1=-3; x2=2; x3=5;
y = x3 – 4x2 – 11x + 30 = 0
2. Nullstellenstuche
7
0.001
Start
i
xi
f(xi)
f´(xi)
xi+1
1
0
30,000
-11,000
2,727
2
2,727
-9,467
-10,504
1,826
3
1,826
2,665
-15,605
1,997
4
1,997
0,048
-15,013
2,000
16
Herunterladen