Ubungen zur Numerik, Sommersemester 2005

Werbung
Übungen zur Numerik, Sommersemester 2005
Aufgaben zum Programmieren mit Java
für die Übungs- und Praktikastunden vom 26.4.05-6.5.05 (keine Abgabe)
Aufgabe 1
Schreiben Sie ein Programm, welches
a)
b)
c)
d)
reelle Zahlen x und y einliest und deren Summe und Produkt berechnet und ausgibt;
reelle Zahlen x und y einliest und deren Summe berechnet, falls x < y ist bzw. deren Produkt, falls x ≥ y;
drei reelle Zahlen x, y, z einliest und deren Maximum sowie deren Minimum berechnet;
drei reelle Zahlen x, y, z einliest und deren Maximum berechnet, falls x, y, z in dieser Reihenfolge monoton
fallend oder monoton wachsend sind bzw. deren Summe und Produkt, falls dies nicht der Fall ist.
Aufgabe 2
Schreiben Sie ein Programm, welches reelle Zahlen p und q einliest und dann die reellen Lösungen
der quadratischen Gleichung x2 + px + q = 0 berechnet und ausgibt.
Aufgabe 3
Schreiben Sie ein Programm, welches
a) eine ganze Zahl k und eine reelle Zahl x > 0 einliest und xk ausgibt;
10
P
b) eine relle Zahl x > 0 einliest und die Summe
xk berechnet und ausgibt;
k=0
c) eine relle Zahl x > 0 und eine Zahl n ∈ IN einliest und dann die Summe
d) eine relle Zahl x ∈]0, 1[ einliest und die Partialsummen
n
P
n
P
xk berechnet und ausgibt;
k=0
xk der geometrischen Reihe
k=0
∞
P
xn so lange
n=1
xn
berechnet, bis deren relative Änderung n−1
P k kleiner als eine Zahl eps > 0 (als geeignete Konstante
x
k=1
vereinbaren) ist.
Aufgabe 4
Schreiben Sie ein Programm, welches die Funktionswerte der Gaußschen Glockenkurve“, definiert
”
2
−x
1
durch f : IR → IR, f (x) := √ e 2 im Intervall [0, 3] an den Stellen xi = 3i
n berechnet und
2π
xi , f (xi ), i = 0, 1, ..., n ausgibt. Die Zahl n ∈ IN soll eingelesen werden.
Aufgabe 5
Es werde ein Konto eröffnet mit K > 0 DM Anfangskapital, welches jährlich mit p > 0 % verzinst wird.
Am Ende jeden Jahres werden x > 0 DM abgehoben. Gesucht ist die Anzahl N der Jahre, nach welcher
das Kapital aufgebraucht worden ist.
Schreiben Sie ein Programm, bei dem K, p, x eingelesen und N berechnet und ausgegeben wird. Man
sehe auch die Möglichkeit vor, dass das Kapital bei zu geringem x nie aufgebraucht wird.
Aufgabe 6
Schreiben Sie ein Programm, welches für einen gegebenen einzugebenden Vektor v ∈ IRn die Normen
v
u n
n
X
uX
max
||v||1 :=
|vi |,
||v||2 := t
vi2 ,
||v||∞ :=
|vi |
i
=
1, ..., n
i=1
i=1
berechnet und ausgibt. Dabei sei n ≤ N := 10 (als Konstante vereinbaren).
Testen Sie alle Programme auf einem Rechner mit geeigneten selbstgewählten Beispielen.
Übungen zur Numerik, Sommersemester 2005
Aufgabe 3
a) Zeigen Sie, dass für die Folge yn := e−1
R1
ex xn dx, n ∈ IN0 die Rekursion gilt
0
(∗)
und leiten Sie aus (∗)
y0 := e−1 (e − 1),
yn+1 = 1 − (n + 1)yn , n ∈ IN0
lim yn = 0 her.
n→∞
b) Berechnen Sie mit Hilfe eines Programmes aus (∗) y0 , ..., y30 und interpretieren Sie das Ergebnis.
c) Ergänzen Sie das Programm so, dass für n = 5 (ebenso für n = 10, 15, 20) yn := 0 gesetzt wird
und dann aus (∗) rückwärts yn−1 , yn−2 , ..., y1 , y0 berechnet und ausgegeben wird. Wie erklärt
sich der sehr gute Wert für y0 ?
Aufgabe 4
Schreiben Sie ein Programm, welches zu einem einzulesenden Einkommen x (auf ganze Euro abgerundet) die zu entrichtende Einkommensteuer e(x) nach folgender Formel berechnet:

0
für x ≤ g0



x−g0
für g0 < x ≤ g1
(793.1y + 1600)y mit y := 10000
e(x) :=
x−g1
(265.78z + 2405)z + 1016 mit z := 10000
für g1 < x ≤ g2



0.45x − 8845
für x > g2
Dabei seien g0 := 7664 (Grundfreibetrag), g1 := 12739 und g2 := 52151 als Konstnaten zu vereinbaren. e(x) soll in Euro und Cent (letzteres abgerundet) ausgegeben werden.
Testen Sie Ihr Programm mit x = 5000, x = 9999, x = 23456 und x = 151515.
Aufgabe 8
Schreiben Sie ein Programm, bei welchem die Grade sowie Koeffizienten zweier Polynome
p(x) = a0 + a1 x + a2 x2 + ... + an−1 xn−1 + an xn und q(x) = b0 + b1 x + b2 x2 + ... + bm−1 xm−1 + bm xm
eingegeben und daraus die Koeffizienten des Produktes p(x)q(x) berechnet und ausgegeben werden.
Rechnen Sie drei Testbeispiele mit den Polynomen aus Aufgabe 6a). Es seien n ≤MAX und m ≤MAX,
mit der Konstanten MAX:= 10.
Aufgabe 9
Schreiben Sie ein Programm, bei welchem die Grade sowie Koeffizienten zweier Polynome
f (x) = a0 + a1 x + a2 x2 + ... + an−1 xn−1 + an xn und g(x) = b0 + b1 x + b2 x2 + ... + bm−1 xm−1 + bm xm (mit
n ≥ m) eingegeben und daraus die Koeffizienten der Polynome q(x) und r(x) berechnet und ausgegeben
f (x)
r(x)
werden, die bei der Polynomdivision
= q(x) +
entstehen. Rechnen Sie drei Testbeispiele mit
g(x)
g(x)
den Polynomen aus Aufgabe 6a). Es seien n ≤MAX und m ≤MAX, mit der Konstanten MAX:= 10.
Aufgabe 12
Sei f : [a, b] → IR eine zu minimierende Funktion. das Verfahren des goldenen Schnittes berechnet
eine Näherung für Minimalstellen von f wie folgt:
√
√
1. Sei a0 := a, b0 := b, c0 := a + 12 (3 − 5)(b − a), d0 := a + 21 ( 5 − 1)(b − a); n := 0;
2. Ist f (cn ) < f (dn ), dann setze an+1 := an , bn+1 := dn , dn+1 := cn
√
cn+1 := an+1 + 12 (3 − 5)(bn+1 − an+1 )
Ist f (cn ) ≥ f (dn ), dann setze an+1 := cn , bn+1 := bn , cn+1 := dn
√
dn+1 := an+1 + 21 ( 5 − 1)(bn+1 − an+1 )
3. Setze n := n + 1 und fahre bei 2 fort.
Schreiben Sie ein Programm, welches näherungsweise das Minimum der Funktion
2
f : IR → IR, f (x) := x2 + e−x mit [0, 1] als Anfangsintervall berechnet.
Abbruchbedingung: |bn − an | < 10−12 .
Aufgabe 13
Bestimmen Sie mit Handrechnung oder mit Hilfe eines Programms Näherungen xn , n = 1, 2, 3, 4
−x
für die kleinste positive Nullstelle von f : IR \ {(2k + 1) π
2 } → IR, f (x) := e − tan x mit
a) dem Sekantenverfahren mit Vorzeichenabfrage und dem Anfangsintervall [0, 1],
b) dem Sekantenverfahren mit vorletzter Näherung und x0 = 0, x1 = 1,
c)
dem Newton-Verfahren und x0 = 0.
Geben Sie jeweils auch f (xn ) und in c) f 0 (xn ) an und rechnen Sie die Näherungen xn auf mindestens 6 Stellen genau aus.
Aufgabe 18
Gesucht ist eine Lösung der Gleichung
(∗) x + a ln x = 0.5
für vorgegebene Werte a > 0. Durch Auflösen nach x erhält man äquivalent zu (∗)
x = φ(x) := 0.5 − a ln x
Schreiben Sie ein Programm, welches die Lösung von (∗) mit Hilfe der Iteration
xk+1 = φ(xk ), k ∈ IN0 zu berechnen versucht. Die Iteration soll abgebrochen werden, wenn k =
kmax oder xk ≤ 0 ist oder die Änderung |δxk | := |xk+1 − xk | relativ zu |xk | eine vorgegebene
Schranke ε > 0 unterschreitet, also wenn
|δxk | < ε|xk |
ist. kmax := 20 und ε := 10−6 sind als Konstanten zu vereinbaren. Rechnen Sie mit a) a = 0.1, x0 =
0.4, b) a = 0.5, x0 = 0.6 und c) a = 1, x0 = 0.7. Bitte lassen Sie alle Iterationsschritte ausgeben.
Aufgabe 21
Schreiben Sie für eine einzulesende Matrix A ∈ IRn,n ein Programm zur Matrix-Vektor-Iteration
x(k+1) :=
Ax(k)
,
||Ax(k) ||2
k ∈ IN0 ,
x(0) ∈ IRn
Starten Sie mit x(0) := e1 als Startvektor und iterieren Sie so lange, bis k =KMAX= 20 oder
||x(k+1) − x(k) ||2 ≤EPS= 10−3 ist. Vereinbaren Sie x als ein- und A als zweidimensionales Feld mit
jeweils der Länge NMAX=5. KMAX, EPS und NMAX seien als Konstanten zu vereinbaren.
Rechnen Sie als Testbeispiele mit folgenden Matrizen:




4
2 3
1
7
0 −2
 2 10 0 −1 
3 −1

5 −2 
A=
A= 0
A=
 3
2
5
0 5
1 
−2 −2
6
1 −1 1
6
Anmerkung: Unter geeigneten Voraussetzungen konvergiert (||Ax(k) ||2 ) gegen einen betragsgrößten
Eigenwert von A und die (x(k) ) gegen einen zugehörigen Eigenvektor.
Aufgabe 24
Gesucht sei eine Lösung x ∈ IR2 des nichtlinearen Gleichungssystems
2x1 − sin4x1 − x2
−x1 + 2x2 − sin x2
=
=
1
1
als Fixpunkt der Abbildung
1
x1
φ :: IR → IR, φ(
) :=
x2
2
2
1 + sin4x1 + x2
1 + x1 + sin x2
!
0
Schreiben Sie ein Programm, welches mit dem Startwert x :=
näherungsweise x ∈ IR2 mit
0
der Iteration x(k+1) := φ(x(k) , k ∈ IN0 berechnet. Rechnen Sie so lange, bis ||x(k+1) −x(k) ||2 ≤EPS=
10−3 ist, maximal aber KMAX= 20 Schritte. EPS und KMAX seien als Konstante zu vereinbaren.
(0)
Aufgabe 27
Schreiben Sie ein Programm, in welchem eine Zahl n ≤NMAX:= 10 (NMAX als Konstante vereinbaren) sowie je n+1 Stützstellen xi , i = 0, 1, ..., n und Stützwerte yi , i = 0, 1, ..., n auf eindimensionale Felder eingelesen werden und dann die Koeffizienten ci , i = 0, ..., n des Lagrangeschen
n
P
Qn
Interpolationspolynoms l(x) =
ci j=0 (x − xj ) berechnet und ausgegeben werden. Testen Sie
i=0
j6=i
Ihr Programm mit folgenden Daten
xi
yi
-1
-3
0
1
1
2
3
0
5
5
sowie
xi
yi
-4
5
-3
3
-2
2
-1
-1
0
2
1
5
2
8
3
3
4
0
5
4
Herunterladen