Archiv für das Tag 'C++'



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 auf einem Scientific Linux 6.4 installiert. Ich beziehe mich hier… 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 der gew├╝rfelten Verteilungsdichte kleiner als der Funktionswert der Maxwell-Boltzmann-Funktion ist…. 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. Weitere Tests w├Ąren aber trotzdem zu empfehlen. Wie schnell die… 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 ├╝berfl├╝ssig, aber ich vermute, dass der Grund auch an der… 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. Im Internet findet man viele brauchbare und wenig brauchbare Beispiele… 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 Wurzel wird auf jeden Fall gr├Â├čer oder gleich der 0… 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 unterschiedliche Weisen durchlaufen. In jedem Durchgang wird ein Wert in… Weiterlesen