Beispiel 19. December 4, 2009



Ähnliche Dokumente
Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Übungen für Woche 10

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

Erwin Grüner

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Rechnung Angebot Zeiterfassung

Einführung in die Programmierung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Dokumentation für das Spiel Pong

Taylorentwicklung der k ten Dimension

Excel Funktionen durch eigene Funktionen erweitern.

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Einführung in die Programmierung

Programmierkurs Java

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

teischl.com Software Design & Services e.u. office@teischl.com

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Java Kurs für Anfänger Einheit 5 Methoden

Professionelle Seminare im Bereich MS-Office

Anwendungsbeispiele Buchhaltung

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Was meinen die Leute eigentlich mit: Grexit?

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

2. Negative Dualzahlen darstellen

Oracle APEX Installer

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Objektorientierte Programmierung

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Informationsblatt Induktionsbeweis

5. Bildauflösung ICT-Komp 10

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

W-Rechnung und Statistik für Ingenieure Übung 11

Aufgabe 6 Excel 2013 (Fortgeschrittene) Musterlösung

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Vorkurs C++ Programmierung

Der Kontowecker: Einrichtung

Version 0.3. Installation von MinGW und Eclipse CDT

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Vorgehensweise bei Lastschriftverfahren

Aufgabe 1 Berechne den Gesamtwiderstand dieses einfachen Netzwerkes. Lösung Innerhalb dieser Schaltung sind alle Widerstände in Reihe geschaltet.

Arbeitsschritte EAÜ Leistungserbringer Einnahmen erfassen

Keine Disketteneinreichung ab 1. Februar 2014

Übung 9 - Lösungsvorschlag

Übungen Programmieren 1 Felix Rohrer. Übungen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Technische Analyse der Zukunft

Kapiteltests zum Leitprogramm Binäre Suchbäume

Delegatesund Ereignisse

Kontrollstrukturen und Funktionen in C

Einführung in PHP. (mit Aufgaben)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

PC CADDIE SMS Versand

How-to: Webserver NAT. Securepoint Security System Version 2007nx

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS Prof. Dr. Margarita Esponda. Prof. Dr.

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Internet online Update (Mozilla Firefox)

Erste Schritte. Lavid-F.I.S. Faktura. Erste Schritte

Zugriff auf Daten der Wago über eine Webseite

Einrichten eines HBCI- Zugangs mit Bank X 5.1

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Aufgaben zur Flächenberechnung mit der Integralrechung

Modellierung und Programmierung 1

Internet online Update (Internet Explorer)

3. LINEARE GLEICHUNGSSYSTEME

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

ModeView Bedienungsanleitung

1 Vom Problem zum Programm

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

Siemens Industry Online Support Suchen und Filtern - Schlagwortsuche. Suchen Alternative 1. Schlagwort-Suche

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Umstellung des TAN-Verfahrens in SFirm

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Vorkurs Mathematik Übungen zu Polynomgleichungen

Blumen-bienen-Bären Academy. Kurzanleitung für Google Keyword Planer + Google Trends

Arrays Fortgeschrittene Verwendung

5. Übung: Binäres Rechnen und Fließkommazahlen Abteilung Verteilte Systeme, Universität Ulm

RFID Lösungen Fragebogen über Ihr RFID Projekt

5.2 Neue Projekte erstellen

Objektorientierte Programmierung

Grundsätze für das Online-Marketing der TMB

Referenzen Typo3. Blog der Internetagentur Irma Berscheid-Kimeridze Stand: Juni 2015

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Inventur. mit Microsoft Dynamics NAV 2013 R2

Transkript:

Beispiel 9 December 4, 2009 Computermathematik (für Informatik) 4. Übungsblatt (Musterlösung) 2. 2. 2009 Die heutigen Übungen sollen mit dem Computeralgebrasystem Sage gelöst werden. Die Lösung der Beispiele soll auf möglichst kompakte Weise erfolgen. Wenn zum Beispiel eine Funktion für mehrere Werte berechnet werden soll, soll das mittels einer geeigneten Schleifen oder Listen Operation erfolgen, und nicht alle Werte einzeln eingetippt werden. Zwischenergebnisse welche in einem weiteren Berechnungsschritt benötigt werden, sollen in eine Variable gespeichert und weiterverwendet werden (nicht neu eintippen). Beispiel 9 ( 2n ) n π = 3 + 3 (2n + )6 n n=. Schreiben Sie ein Funktion pi approx(k,d) die die ersten k Summanden der obigen Reihe berechnet um eine Approximation von π zu erhalten. Die Rechnungen sollen auf d Stellen genau erfolgen. 2. Wieviele Summanden k werden benötigt um π auf d = 20, 40,..., 200 Nachkommastellen genau zu berechnen? Erzeugen Sie eine Graphik in der die Wertepaare (d, k) eingezeichnet sind. def pi_approx(k, digits = 00): R = parent(.n(digits = digits)) return 3+3*sum(R(binomial(2*n, n) / ((2*n+)*6^n)) for n in [..k]) pi_approx(6, 500) 3.458942539259292530386280386280386280386280386280386280386280386280386280386280\ 3862803862803862803862803862803862803862803862803862803862803862803862803862803862803\ 8628038628038628038628038628038628038628038628038628038628038628038628038628038628038\ 6280386280386280386280386280386280386280386280386280386280386280386280386280386280386\ 2803862803862803862803862803862803862803862803862803862803862803862803862803862803862\ 8038628038628038628038628038628038628038628038628038628038628038628038628039 def approximate_pi(pi_approx, digits): k = terminate = False calc_digits = digits + 20 pi_digits = pi.n(digits = calc_digits) epsilon = (0^-digits).n(digits = calc_digits) while not terminate: approx = pi_approx(k, digits = calc_digits)

terminate = abs(approx - pi_digits) < epsilon k += return (k, approx) %time liste = [(k, approximate_pi(pi_approx, k)[0]) for k in range(0, 200, 0)] CPU time: 2.80 s, Wall time: 2.8 s list_plot(liste) 300 250 200 50 00 50 20 40 60 80 00 20 40 60 80 0.0. Lösung mit Generatoren Ein Generator ist ein Python Konstrukt, dass eine Folge von Werten erzeugt. Man erzeugt einen Generator, wie eine normale Python Funktion, allerdings wird das Schlüsselwort yield anstatt return verwendet um Werte zurückzugeben. def gen(): yield yield 4 yield 7 gen() erzeugt jetzt ein Generator Objekt.Aufrufen der Funktion g = gen() type(g) <type generator >.next() berechnet man jeweils den nächsten Wert des Generators:Mit der Methode g.next(); g.next(); g.next() 2

4 7 StopIteration.Wenn der Generator kein neues Element mehr erzeugen kann, bekommt man die Fehlermeldung g.next() StopIteration Man kann mit einer for-schleife über einen Generator iterieren: for i in gen(): print i 4 7 Wir definieren uns einen Generator für die natürlichen Zahlen: def count(): n = 0 while True: yield n n += Aufrufen der Funktion count() erzeugt jetzt ein Generator Objekt. nat = count() Mit der Methode.next() berechnet man jeweils einen Wert des Generators: nat.next(); nat.next(); nat.next() 0 2 Generatoren können natürlich auch Parameter haben, zum Beispiel auch andere Generatoren: def sum_generator(g): value = 0 while True: value += g.next() yield value sum generator(g) erzeugt einen generator der die Summe der Werte des Generators g erzeugt. g = sum_generator(count()) for i in g: print i if (i > 50): break 3

0 3 6 0 5 2 28 36 45 55 Eine Generator Comprehension ist das äquivalent einer List Comprehension nur eben für Generatoren. Hier erzeugen wir uns aus dem Generator für die natürlichen Zahlen einen neuen Generator für die ungeraden Quadratzahlen. odd_squares = (x^2 for x in count() if x % 2 == ) for i in range(4): print odd_squares.next() 9 25 49 Die Funktion take nimmt einen Generator g und eine nate Zahl n, und gibt eine Liste der nächsten n Elemente des Generators zurück. def take(g, n): l = [] for i in xrange(n): try: l.append(g.next()) except StopIteration: break return l take(odd_squares, 5) [8, 2, 69, 225, 289] 4

Zurück zum Beispiel: def pi_generator(digits = 00): R = parent(.n(digits = digits)+20) summe = 3 n = while True: summe += R(3*binomial(2*n, n) / ((2*n+)*6^n)) n += yield summe g = pi_generator(digits = 00) print g.next() print g.next() print g.next() 3.2500000000000000000000000000000000000000000000000000000000000000000000000000000000\ 0000000000000000 3.3906250000000000000000000000000000000000000000000000000000000000000000000000000000\ 0000000000000000 3.4553392857428574285742857428574285742857428574285742857428574285742\ 8574285742857 def approximate_pi(digits): k = terminate = False calc_digits = digits + 20 pi_gen = pi_generator(digits = calc_digits) pi_digits = pi.n(digits = calc_digits) epsilon = (0^(-digits)).n(digits = calc_digits) while not terminate: pi_approx = pi_gen.next() terminate = abs(pi_approx - pi_digits) < epsilon k += return (k, pi_approx) approximate_pi(200) (327, 3.45926535897932384626433832795028849769399375058209749445923078640628620\ 8998628034825342706798248086532823066470938446095505822372535940828487450284\ 027093852055596446229489549303896884752094829022) liste2 = [(k, approximate_pi(k)[0]) for k in range(0, 200, 0)] CPU time: 0.4 s, Wall time: 0.5 s list_plot(liste2) 5

300 250 200 50 00 50 20 40 60 80 00 20 40 60 80 6