Kapitel 1 - BFH-TI / Organisation

Werbung
Algorithmen & Datenstrukturen Lösungen
P. Fierz / HS 2012/2013
Kapitel 1
Daten
Die Programme sind alle im zipfile 01_Z_Daten.zip gespeichert. Jede Aufgabe ist als Package
organisiert (Bsp. u1.aufgabe2).
Aufgabe 1.1 [Endliche Arithmetik]
a) Wir wählen die kleinstmögliche Mantisse (diese ist ja immer normalisiert) und zwar 1.0
und dazu den kleinstmöglichten Exponenten −33 und erhalten:
kleinste positive Zahl = 1.0 · 10−33
b) Entsprechend nehmen wir die grösste Mantisse und den grössten Exponenten:
grösste positive Zahl = 9.999999 · 1033
c) Wir nehmen die grösste Mantisse und den Exponenten −1.
grösste Zahl kleiner als 1 = 9.999999 · 10−1
d) Wir nehmen die kleinste Mantisse grösser als 1 1.000001 und den Exponenten 2.
kleinste Zahl grösser als 100 = 1.000001 · 102
e) Das Intervall der möglichen Mantissen ist [1000000 . . . 9999999] Wir haben also 8999999
verschiedene Mantissen, die nicht gleich Null sind. Ferner sind 67 verschiedene Exponenten möglich. Daher haben wir 8999999 · 67 positive Zahlen. Man sieht sofort, dass es
ebensoviele negative Zahlen gibt und noch die 0.
verschiedene Zahlen = (2 · 8999999 · 67) + 1
f) Das folgende Zahlenbeispiel beweist die Aussage:
x = 9.000002 y = 2.0 z = 5.000003
(x · y) · z = (9.000002 · 2.0) ·5.000003 = 90.00005
|
|
{z
gerundet=18.0
{z
}
gerundet=90.00005
}
x · (y · z) = 9.000002 · (2.0 · 5.000003) = 90.00011
|
{z
}
gerundet=10.00001
|
{z
gerundet=90.00011
}
1-1
Algorithmen & Datenstrukturen Lösungen
P. Fierz / HS 2012/2013
Aufgabe 1.2 [Berechnung von π]
a) Aus der Gleichung
v
q
u
u 1 − 1 − sin2 (α)
t
α
sin( ) =
2
2
können wir die folgende Formel für A2n herleiten:
A2n = n ·
v
q
u
u 1 − 1 − sin2 (α )
t
n
2
Wir müssen nun auf der rechten seite sin(αn ) eliminieren. Dies können wir mit Hilfe
der Formel
2 · An
n
An = sin(αn ) ⇒ sin(αn ) =
2
n
tun. Die Rekursionsformel lautet also:
A2n = n ·
v
q
u
u 1 − 1 − ( 2·An )2
t
n
2
b) Programm: u1.aufgabe2.Pi1
c) Falls man diese Rekursionsformel implementiert, bekommt man falsche Resultate. Das
Problem liegt unter der Wurzel im Zähler. Im Ausdruck
1−
q
1 − sin2 (α)
werden fast gleich grosse Zahlen voneinander subtrahiert, wenn α gegen null geht weil
dann sin2 (α) auch gegen null strebt. Dies führt zu Stellenauslöschung.
d) In der Formel
a−b=
setzen wir a = 1 und b =
q
1−
a2 − b2
a+b
1 − sin2 (αn ) ein und erhalten
q
1 − sin2 (αn ) =
sin2 (αn )
1 + 1 − sin2 (αn )
p
daraus folgt die folgende Formel:
α
sin( ) = r
2
sin(α)
2(1 +
q
1 − sin2 (α))
Wird nun das Programm mit dieser Formel implementiert, so erhält man eine stabile
Berechnung für π. Diese Formel ist im Programm u1.aufgabe2.Pi2 implementiert.
1-2
Algorithmen & Datenstrukturen Lösungen
P. Fierz / HS 2012/2013
Aufgabe 1.3 [Geklammerte Ausdrücke]
Programm: u1.aufgabe3.Klammer
Aufgabe 1.4 [Polnische Notation]
Programm: u1.aufgabe4.PolnischStack
Aufgabe 1.5 [Bäume]
Vollständiger binärer Baum
Beliebiger Binärer Baum
Gegeben Tiefe d
Anzahl Blätter
2d
zwischen 1 und 2d
Anzahl Knoten
2d+1 − 1
zwischen d und 2d+1 − 1
Gegeben Anzahl Blätter m
Tiefe
log2 (m)
zwischen log2 (m) und ∞
log
(m)+1
2
Anzahl Knoten
2
− 1 = 2m − 1
zwischen 2m − 1 und ∞
Gegeben Anzahl Knoten n
n+1
n+1
Anzahl Blätter
zwischen
1 und
2
2
m
l
n+1
)
)
und
n−1
Tiefe
log2 ( n+1
zwischen
log
(
2
2
2
Aufgabe 1.6 [Suchstruktur als ADT]
Interfaces: Interface: u1.aufgabe6bis9.SortSuch
1-3
Herunterladen