07.12.2012 Aufrufe

ASAXS - Helmholtz-Zentrum Berlin

ASAXS - Helmholtz-Zentrum Berlin

ASAXS - Helmholtz-Zentrum Berlin

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

8 Nanostruktur und nanochemische Analyse der getemperten Glaskeramiken<br />

qi aufweisen. Aus diesem Grund ist in der Matlab-Klasse MNLRSAS eine Startroutine implementiert,<br />

welche alle N Streukurven auf ein einheitliches q-Raster mit M Stützstellen<br />

konvertiert. Dabei werden die gemessenen differenziellen Streuquerschnitte linear interpoliert.<br />

Das q-Raster kann als äquidistant bei einer linearen oder einer logarithmischen q-Skala definiert<br />

werden. Letzteres stellt eine zusätzliche Gewichtung der Messergebnisse dar, wobei den<br />

Messwerten bei kleinen q-Werten mehr Gewicht bei der Regression zugeordnet wird. Aufgrund<br />

des Verlaufs der differenziellen Streuquerschnitte ist ein äquidistantes Raster bei einer<br />

logarithmischen q-Skala der linearen vorzuziehen.<br />

Die Berechnung der Funktion Z(...) für einen bestimmten q-Wert dauert aufgrund von numerischen<br />

Berechnungen der Funktion Y (...) je nach Konvergenzeigenschaft unterschiedlich<br />

lange. Es konnte festgestellt werden, dass die Berechnungsdauer für größere q-Werte deutlich<br />

zunimmt. Derzeitige Rechnerarchitekturen erlauben es, Berechnungen auf mehrere Prozessoren<br />

aufzuteilen, sofern dieses mathematisch möglich ist. Die Berechnung des Chi-Quadrats<br />

nach Gleichung (8.18) wird in der Matlab-Klasse auf mehrere Prozessoren aufgeteilt, um die<br />

nichtlineare Regression deutlich schneller durchführen zu können. Hierfür wird die Summe<br />

in Gleichung (8.18) auf die zur Verfügung stehenden K Prozessoren aufgeteilt, um der unterschiedlich<br />

langen Berechnungsdauer der Funktion Z(...) Rechnung zu tragen. Die Summe<br />

wird wie folgt auf die K Prozessoren aufgeteilt:<br />

• Prozessor 1: q1, qK+1, q2K+1, ... .<br />

• Prozessor 2: q2, qK+2, q2K+2, ... .<br />

• Prozessor K: qK, q2K, q3K, ... .<br />

Nachdem alle K Prozessoren die Funktionen Z(...) für die entsprechenden q-Werte berechnet<br />

haben, werden diese nachträglich wieder in die richtige Reihenfolge q1, q2, q3, ... umsortiert. Die<br />

Aufteilung der Summe nach diesem Schema auf die K Prozessoren führt dazu, dass alle K<br />

Prozessoren in etwa die gleiche Zeit für die Berechnungen der Funktionen Z(...) brauchen. Die<br />

gleiche Aufteilung auf mehrere Prozessoren wurde auch für die Berechnung der Jacobi-Matrix<br />

J umgesetzt, deren Berechnung zeitaufwendiger ist im Gegensatz zu den Berechnungen der<br />

Funktionen Z(...).<br />

Die implementierte Option der parallelen Berechnung des Chi-Quadrats sowie der Jacobi<br />

Matrix ist vor allem für die simultane nichtlineare Regression von vielen Streukurven und<br />

vielen freien Parametern von Vorteil. In der vorliegenden Arbeit wurden bis zu 64 Streukurven<br />

mit jeweils 150 q-Werten (= 9600 Stützstellen) simultan angeglichen. Bei der Berechnung auf<br />

einem 2xQuad-Core Rechner führte dieses zu einer Zeitersparnis um einen Faktor von 7.5 für<br />

die simultane nichtlineare Regression.<br />

Numerische Algorithmen für die Doppelintegration<br />

Die Berechnung der Modellfunktion Y (...) sowie der Jacobi-Matrix J bei jedem Iterationsschritt<br />

der Minimierung von Gleichung (8.18) bedingt die Berechnung eines Doppelintegrals<br />

für jeden q-Wert (siehe Gleichung (8.7) und (8.1)). Das Doppelintegral in Gleichung (8.7)<br />

lässt sich nicht analytisch bestimmen. Demzufolge ist es nötig, dieses numerisch zu approximieren.<br />

Für die numerische Berechnung des Doppelintegrals wurde die in Matlab implementierte<br />

Standard-Routine "Recursive Adaptive Simpson Quadrature"verwendet [116]. Dieser Algorithmus<br />

basiert im Wesentlichen auf der Annäherung der Funktion durch eine stufenweise<br />

definierte Variante<br />

� b � d<br />

f(x, y)dydx ≈ � �<br />

f(xi, yj)(xi+1 − xi)(yj+1 − yj). (8.19)<br />

98<br />

a<br />

c<br />

i<br />

j

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!