Geant4 auf Scientific Linux 6.4 (Red Hat) installieren

Geant4 ist ein in C++ geschriebenes Framework zur Simulation von Teilchenwechselwirkungen. Damit kann man zum Beispiel die Abschirmung von Raumsonden oder die Strahlungsdosis auf einen Patienten während einer Strahlentherapie simulieren. Ein mächtiges Programm und leider nicht immer einfach zu installieren, wenn man alle Elemente nutzen möchte. Ich möchte hier einen Weg zeigen, wie man Geant4 … Weiterlesen

Maxwell-Boltzmann-Verteilung in C++

C++ bietet einige statistische Verteilung an, aber eine wichtige Verteilung der statistischen Physik – die Maxwell-Boltzmann-Verteilung wird nicht angeboten (zumindest konnte ich sie nicht finden), also habe ich mir selbst einen Generator für diese Verteilung geschrieben. Der Algorithmus ist nur wenige Zeilen lang: man würfelt ein Koordinatenpaar (Energie und Verteilungsdichte) und schaut ob der Wert … Weiterlesen

Matrix invertieren in C++

Eine Matrix

Wie man eine Matrix mit Hilfe des Gauß-Jordan-Algorithmus invertiert habe ich bereits gezeigt. Nun habe ich versucht den vorgestellten Algorithmus in C++ umzusetzen. Als Ergebnis kam eine überschaubare Funktion mit einer Hilfsfunktion um zwei Zeilen in einer Matrix zu vertauschen. Ich habe die Funktion mit ein paar Matrizen ausprobiert und die Implementierung scheint zu funktionieren. … Weiterlesen

C++11: Alternative Syntax für die Funktionsdeklarationen

In dem neuen C++ Standard wurde eine alternative Syntax für Funktionen eingeführt. Diese erlaubt den Datentyp des Rückgabewertes am Ende des Funktionskopfes zu schreiben. Über die Bedeutung des Schlüsselwortes auto habe ich bereits geschrieben. In diesem Fall sorgt es dafür, dass der Kompiler die Deklaration auch solche erkennt. Für mich erscheint es an dieser Stelle … Weiterlesen

C++: explode, split, tokenize

In PHP gibt es eine Funktion namens explode, die einen String anhand eines oder mehrerer Zeichen aufspaltet und als ein Array zurückgibt. Manchmal wird solch eine Funktion auch in C++ benötigt. Leider gibt es dafür keine native Implementierung. Es gibt zwar eine C-Funktion stdtok, aber die ist ziemlich unschön und gibt kein C++ Array zurück. … Weiterlesen

Quadratwurzel mit Bisektion berechnen

Bisektion-Verfahren. Das Intervall zwischen L und H in der Mitte teilen und testen ob der Wert m unter- oder überschätzt wurde. Intervallgrenzen anpassen.

Im Folgenden werde ich zeigen, wie man relativ einfach die Umkehrfunktion einer monotonen Funktion berechnen kann. Als Beispiel nehme ich die Wurzelfunktion. Nehmen wir an, wie möchten die Wurzel von 10 berechnen. Wie geht man dabei vor? Wir kennen das Ergebnis nicht, aber wir können sagen in welchem Bereich es sich befindet. Der Betrag der … Weiterlesen

Cache-Optimierung: Zeitliche und Räumliche Lokalität

Cache-Hierarchie.

Wenn man schnelle Programme schreiben möchte, so muss man auch die Funktionsweise der Hardware beachten, wie ich im Folgenden zeige werde. Nehmen wir an, es muss ein zweidimensionales Array vollständig durchlaufen werden. Dieser Fall trifft beispielsweise oft auf, wenn man Bildmanipulationen durchführt. Dazu ein minimales Beispiel. Es wird ein zweidimensionales Integer-Array erstellt und auf zwei … Weiterlesen