Archiv für das Tag 'programmieren'

Maxwell-Boltzmann-Verteilung in C++

Maxwell-Boltzmann-Verteilung bei drei Temperaturen.

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

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

Pi mit Monte-Carlo-Simulation und Leibnitz-Formel berechnen

Ein Tausend zufällig verteilte Punkte.

Die Kreiszahl π≈3,14159 ist jedem bekannt, aber wie berechnet man sie? Viele Mathematiker haben sich damit beschäftigt und sehr viele interessante und mächtige Algorithmen entwickelt, so das mittlerweile über 5 Billionen Nachkommastellen von Pi bekannt sind. Am einfachsten bestimmt man die Kreiszahl nach ihrer Definition. Man nimmt also einen Kreis, misst seinen Durchmesser und seinen Umfang und berechnet das Verhältnis Durchmesser/Umfang, welches der Kreiszahl entspricht…. Weiterlesen

C++: auto Schlüsselwort

auto keyword Beispiel

Der neue C++ Standard wird viele Neuerungen mit sich bringen und bereits jetzt unterstützen einige Compiler die neuen Konzepte. Eines der kleineren Neuerungen ist das Schlüsselwort auto. Es steht für einen unbekannten Datentyp, den der Compiler selbst bestimmt. Am einfachsten versteht man es anhand eines Beispiels. Führt man das Beispiel aus, so bekommt man folgende Bildschirmausgabe zu sehen. Der Compiler erkennt aus dem Zusammenhang welcher… Weiterlesen

C++ Teil 9 – Zeiger

Zeigeraddition

Das Konzept der Zeiger bzw. Pointer(eng. für Zeiger) ist für Anfänger wahrscheinlich der unbeliebteste und für einen Profi der mächtigste Bestandteil von C++. Viele Anfänger verstehen sie anfangs nicht und sogar Profis machen manchmal Fehler im Umgang mit ihnen. Nichtsdestotrotz sind Zeiger ein sehr wichtiges Thema, von dem sich kein C++ – Programmierer drücken kann. In diesem Abschnitt werde ich eine Einführung in dieses komplexe… Weiterlesen