Blatt12 Blatt12

Werbung
Programmieren für Physiker
Institut für Theoretische Physik
Interfakultatives Institut für Anwendungen der Informatik
Dr. S. Gieseke, Dr. A. Mildenberger
http://comp.physik.uni-karlsruhe.de
SS 2010 – Blatt 12
Bearbeitungszeitraum: bis 07. Juli 2010
Klausurtermin: Dienstag, 13. Juli 2010, 17.30 Uhr.
Hörsaal gemäß erstem Buchstaben des Nachnamens: A-L =
b Daimler-HS (HMO),
M-Z =
b Benz-HS (HMU).
Dauer: 90 Minuten. Es sind keine Hilfsmittel erlaubt. Bitte Studentenausweis mitbringen.
Bachelor-Studierende: Es ist erforderlich, sich bis 07.07.2010 unter https://studium.kit.edu/ zur
Klausur anzumelden.
Klausurergebnisse/Scheine: ab Fr, 16. Juli in den Übungen. Details auf der Webseite.
Aufgabe 29: Dreier-Vektoren → Vierer-Vektoren
Pflichtaufgabe
Programmieren Sie zwei Klassen, Vec3D und Vec4D, zur Beschreibung von dreidimensionalen
kartesischen Raumpunkten (x, y, z) und von Lorentzvektoren (ct, x, y, z). Das Einheitensystem
sei im Folgenden so gewählt, dass c = 1 ist.
Die Vierervektoren sind dabei durch Vererbung von den dreidimensionalen Vektoren abzuleiten. In beiden Klassen sollen die eigentlichen Datenkomponenten nicht direkt von außerhalb
zugreifbar sein, gegebenenfalls über geeignete Methoden. Vec4D kann der direkte Zugriff auf
Vec3D-Daten erlaubt werden.
Implementieren Sie bitte mindestens folgende Methoden: (i) Setzen der Vektoren, z.B. per Konstruktor, (ii) Längenquadrat len sq in beiden Klassen (3D: nach Euklid-Norm x2 + y 2 + z 2 , 4D:
nach Minkowski-Metrik t2 − x2 − y 2 − z 2 ) und (iii) nur in der Basisklasse eine Methode angle,
die den Winkel zwischen zwei dreidimensionalen Vektoren berechnet. Verwenden Sie bitte beim
Längenquadrat der Vierervektoren dasjenige der Dreiervektoren.
Schreiben Sie ein Hauptprogramm, in dem zwei Vierervektoren mit Werten gesetzt werden. Dann
ist die Länge der Vektoren und der Winkel zwischen den Raumkomponenten zu berechnen und
auszugeben.
Aufgabe 30: Perkolation
freiwilliges Zusatztestat1
Auf einem Quadratgitter sei jedes einzelne Quadrat mit der Wahrscheinlichkeit p schwarz gefärbt,
umgekehrt sind Quadrate also mit der Wahrscheinlichkeit 1 − p weiß.
Als Cluster bezeichnen wir ein zusammenhängendes Gebilde von schwarzen Quadraten, die jeweils mindestens eine Kante gemeinsam haben, siehe Beispiel im obigen Bild. Abhängig von p
1
Sie können bei dieser freiwilligen Aufgabe ein Testatkreuzchen erhalten, welches gewertet wird; die Aufgabe
zählt aber nicht als Pflichtaufgabe.
werden wir verschieden große Cluster erwarten können. Fragestellungen dieser Art untersucht
die Perkolationstheorie. Motivation dafür kann z.B. die Ausbreitung eines Waldbrandes, die Polymerisation von Kunststoff, oder die Erreichbarkeit von Flüssigkeiten in porösem Gestein sein.
Simulieren Sie die Perkolation auf einem Quadratgitter der Größe n × n, bei grafischer Ausgabe
z.B. n = 200.
Zu Beginn lassen Sie die Wahrscheinlichkeit p vom Benutzer eingeben, dann ist mit diesem Parameter ein zufälliges System zu erstellen. Es soll nun die Masse“ M des Clusters (also die
”
Anzahl der schwarzen Quadrate) ermittelt werden, der vom mittleren Punkt des Systems ausgeht. (Falls der mittlere Punkt weiß ist, ist die Clustermasse null). Überlegen Sie sich hierzu
einen geeigneten Algorithmus.
Geben Sie die Clustermasse aus und stellen Sie die Clusterkonfiguration durch Verwendung verschiedener Farben grafisch dar (Anleitung zu CImg siehe Übungsblatt 11). Alternativ hierzu kann
eine Textausgabe verwendet werden, beispielsweise ’ ’ für ein weißes Feld, ’+’ für ein schwarzes
Feld und ’#’ für ein schwarzes Feld, welches zum Cluster gehört.
Schauen Sie sich mehrere Systeme auf dem Bildschirm an. Beobachten Sie eine qualitative Änderung, wenn Sie p im Bereich [0.5, 0.7] ändern?
Zusatz: Um derartige Systeme quantitativ zu untersuchen, muss die Statistik vieler Systeme
analysiert werden, z.B. die mittlere Clustermasse. Ferner sind hinreichend große Systeme zu
simulieren, da natürlich die Ränder das Ergebnis beeinflussen. Wenn Sie in Richtung dieser Fragestellung experimentieren wollen, dann erstellen Sie für verschiedene Systemgrößen Graphen
von loghM i/ log n als Funktion von p im Bereich 0.5 ≤ p ≤ 0.7.
Aufgabe 31: Dekonstruktivismus
freiwillig
Was gibt das untenstehende Programm auf dem Bildschirm aus und warum? Versuchen Sie, das
Programm zu analysieren.
#include <iostream>
using namespace std ;
class sinnfrei {
private:
int aha ;
public:
sinnfrei (int a)
{ aha = a ; }
~sinnfrei()
{
if (aha>0)
{ sinnfrei dummy(aha-1) ;
}
cout << aha << endl ;
}
} ;
int main()
{
int a ;
cout << "Bitte ’ne positive ganze Zahl: " ;
cin >> a ;
sinnfrei dummy(a) ;
}
Herunterladen