• Keine Ergebnisse gefunden

1 Eine Runde Sache 12 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "1 Eine Runde Sache 12 Punkte"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Informatik 3 WS 2002/03

1. ¨ Ubungsblatt

Ausgabe: 21.10.01

Bearbeitungszeit: Zwei Wochen

Christoph L¨uth <cxl>

Felix Beckwermert <foetus>

Michael Skibbe <mskibbe>

Dennis Walter <dw>

Rafael Trautmann <pirate>

Thomas Meyer <mclee>

1 Eine Runde Sache 12 Punkte

Kreise sind eine runde Sache, und ihr Umfang steht zu ihrem Durchmesser im Verh¨altnis von ungef¨ahr drei zu eins, oder genauer gesagt π zu eins. Haskell kennt zwar pi als vordefinierte Fließkommakonstante, aber in dieser Aufgabe soll eine beliebig genaue Approximation von π errechnet werden. Das ist recht n¨utzlich, wenn man eine große Genauigkeit ben¨otigt, zum Beispiel um die L¨anger der Erdumlaufbahn auf wenige Zentimeter genau zu bestimmen.

Zur Berechnung vonπgibt es viele N¨aherungsverfahren, aber die meisten sind relativ rechen- aufwendig und brauchen endlos und drei Jahre, um vern¨unftige N¨aherungen zu produzieren.

Hier werden wir den Bailey-Borwein-Plouffe-Algorithmus verwenden, demzufolge π durch folgende Reihe angen¨ahert werden kann:

π =

X

i=0

ai, mit ai = ( 1

16)i·( 4

8i+ 1 − 2

8i+ 4 − 1

8i+ 5 − 1 8i+ 6).

Unter Nutzung des DatentypsRational soll eine beliebig genaue Ann¨aherung von π imple- mentiert werden.

Implementieren Sie eine Funktion

p :: Int-> Rational

die π auf die angegebene Anzahl Dezimalstellen berechnet.

Hinweise: Implementieren sie p, indem Sie zuerst eine Funktion

a :: Int-> Rational

implementieren, die das Element ai der N¨aherungsreihe berechnet. Damit implementieren Sie eine rekursive Funktion

approx :: Rational-> Int-> Rational-> Rational

wobei das erste Argument die Genauigkeit ist, das zweite Argument der Index, und das dritte Argument der N¨aherungswert. approx ε k p berechnet das n¨achste Element p0 der Reihe (als p0 =p+ak). Wenn die Differenz zwischen p und p0 kleiner als die Genauigkeitε ist, geben wir p zur¨uck, ansonsten wird die n¨achste Iteration aufgerufen. Die Genauigkeit ε ergibt sich aus der Anzahl der Dezimalstellen d als ε= 10d.

Folgende, in Haskell vordefinierte Funktionen k¨onnten f¨ur die L¨osung n¨utzlich sein:

^ :: Rational-> Int-> Rational -- Infix fromInt :: Int-> Rational

(2)

Das besondere am Bailey-Borwein-Plouffe-Algorithmus ist ¨ubrigens, dass er erlaubt, dien-te Hexadezimalstelle (oder Bin¨arstelle) vonπ zu berechnen, ohne die Stellen davor zu kennen.

Davon machen wir hier allerdings keinen direkten Gebrauch.

2 Sch¨ oner Ausgeben 8 Punkte

Jetzt haben wir zwarπbeliebig genau berechnet, aber die Ausgabe ist nicht sehr befriedigend.

Implementieren Sie deshalb eine Funktion

showRat :: Int-> Rational -> String

wobei showRat n r die rationale Zahl r in Dezimaldarstellung bis auf n Stellen nach dem Komma zur¨uckgeben soll. Beispiel

> showRat 10 (1%3) 0.3333333333

> showRat 10 (3%2) 1.5000000000

Hinweis: Implementieren Sie eine Hauptfunktion, die den ganzzahligen Teil der Zahl berech- net, und eine Hilfsfunktion aufruft, die rekursiv die Stellen nach dem Komma zur¨uckgibt.

Dazu implementieren sie eine Funktion

rest :: Rational-> Rational

die den Rest (nach dem Komma) zur¨uckgibt. Folgende, in Haskell vordefinierte Funktionen k¨onnten f¨ur die L¨osung hilfreich sein:

truncate :: Rational-> Integer fromInteger :: Integer-> Rational

++ :: String-> String-> String -- Infix abs :: Rational-> Rational

show :: Integer -> String

Diese Fassung ist vom 22. Oktober 2002.

Referenzen

ÄHNLICHE DOKUMENTE

Jede Regel der Grammatik (siehe MicroJava Grammatik auf der Übungshomepage) muss durch eine eigene Methode vertreten sein, welche die Top-Down-Erkennung realisiert..

Dieser Beitrag stellt die Pinselwaschstraße und weitere Tipps und Tricks vor, mit denen Sie die Situation entzerren und auch noch ein bisschen Wasser sparen

Auch ohne in kulturellen Rela- tivismus abzugleiten ist es sinnvoll, Gespräche über Konzepte vom „guten Leben“ in einen weiter ge- steckten Vergleichsrahmen einzuordnen, um

Sie sollten sich nicht darauf versteifen, dass alle Ziele punktgena erreicht werden, sondern vielmehr versuchen, die Ziele, bei denen man bereits auf gutem Wege ist, möglichst noch

Der Querschnitt eines Tunnels habe die Form eines Rechtecks mit aufge- setztem Halbkreis.. Der Umfang des Querschnitts betr¨ agt

Aber die Arbeit unter den Bedingungen der Pandemie ist auch eine große Chance: Wir haben neue Aufgabenfelder für die Apotheken er- schlossen?. Und es hat sich gezeigt, dass

ordnung: Wenn eine Apotheke ein bereits abgerechnetes Arzneimittel nochmals abgibt (zum Beispiel einen Kundenumtausch), darf sie dafür nicht mehr den vollen Preis erneut

Diese Repräsentations- weisen können dabei nur in einer disziplinübergreifenden Untersuchung ange- messen wahrgenommen werden, die ein Desiderat in der spätestens seit 2013