2010-12-11 6 views
1

In meiner Forschung erzeuge ich diskrete Ebenen, die Brüche im Gestein darstellen sollen. Die Orientierung einer Bruchebene wird durch ihre Tauch- und Tauchrichtung angegeben. Wenn ich das weiß, kenne ich auch die Komponenten des Normalvektors für jede Ebene.Zufallswerte aus einer Fisher Distribution zeichnen

Bisher habe ich die Dip- und Dip-Richtung unabhängig von normalen Verteilungen gezeichnet. Das ist in Ordnung, aber ich möchte die Möglichkeit hinzufügen, aus der Fisher-Distribution zu zeichnen.

Die Fisher Verteilung wird beschrieben HERE

Grundsätzlich mag ich eine durchschnittliche dip und dip Richtung können angeben (oder einen mittleren Vektor) und einen „Fisher Konstante“ oder Dispersionsfaktor, k, und Zeichnen Sie Werte zufällig aus dieser Orientierungsverteilung.

Zusätzliche Informationen: Es scheint, als ob die "Von Mises-Fisher-Distribution" entweder das Gleiche ist wie das, was ich die "Fisher-Distribution" nenne oder irgendwie verwandt ist. Einige Informationen über die Von Mises-Fisher-Verteilung:

Wie Sie sehen können, habe ich ein wenig in diese Sache, aber ich gebe zu, dass ich die Mathematik nicht vollständig verstehe. Ich fühle mich, als wäre ich nah dran, aber ich verstehe es nicht ganz ... Jede Hilfe wird sehr geschätzt!

Wenn es hilft, ist meine Programmierung in FORTRAN.

+0

Viele Fragen zur Probenahme sind bereits auf der Website. Kurze kurze Version: CDF invertieren oder ablehnen. Vorhandene Fragen: [Pseudozufallszahlengenerator - Exponentielle Verteilung] (http://stackoverflow.com/q/2106503) [Zufallszahlengenerator, der eine Potenzgesetzverteilung erzeugt?] (Http://stackoverflow.com/q/918736) [Wahrscheinlichkeitsdichtefunktionsproblem, von einem Papier, implementiert mit C++, funktioniert nicht wie vorgesehen] (http://stackoverflow.com/q/4103477) [Wie erzeuge ich Punkte, die einem Histogramm entsprechen?] (Http: // stackoverflow .com/q/423006). Diese sind nicht in Fortran, aber die Mathematik ist immer gleich. – dmckee

+1

Sehen Sie sich diese beiden Referenzen zu Richtungsdaten an. Fisher, NI., Statistische Analyse von kreisförmigen Daten, Cambridge University Press, 1993. ISBN 0-521-35018-2 Fisher, NI., Lewis, T., Embleton, BJJ. Statistische Analyse von sphärischen Daten, Cambridge University Press, 1993. ISBN 0-521-45699-1 – Tony

+0

Ich denke, eine Sache, die ich nicht verstehe: In der Verbindung, die ich zur Verfügung gestellt, ist die Verteilung in Bezug auf Theta. Also, im Grunde ist die Verteilung eindimensional, also verstehe ich nicht ganz, wie es in 3D funktioniert? Zum Beispiel könnte ich einen Wert Theta simulieren, aber das würde einen Ring um den Mittelwertvektor, nicht einen tatsächlichen Punkt angeben. –

Antwort

2

der Algorithmus ist auf Seite 59 von "Statistische Analyse Daten von sphärischen" von NI Fisher, T. Lewis und BJJ Embleton. Ich empfehle dieses Buch sehr - es wird Ihnen helfen, die Mathematik zu verstehen.

Im Folgenden werden zufällige Fisher-Verteilungsorte in der Mitte des Nordpols erzeugt. Wenn Sie sie zufällig zentriert haben möchten, erzeugen Sie zusätzliche gleichförmige zufällige Orte auf der Kugel und drehen diese Orte, um auf diese Orte zentriert zu sein. Wenn Sie sich dieser Schritte nicht sicher sind, konsultieren Sie das oben genannte Buch. Dieses Fortran-Codefragment verwendet einen Zufallszahlengenerator, der einheitliche Abweichungen von 0 bis 1 erzeugt.

lambda = exp (-2.0 * kappa) 
    term1 = get_uniform_random() * (1.0 - lambda) + lambda 
    CoLat = 2.0 * asin (sqrt (-log (term1)/(2.0 * kappa))) 
    Long = 2.0 * PI * get_uniform_random() 
+0

Ehrfürchtig. Danke, ich werde dieses Buch dieses Wochenende auswählen. –

2

Ich denke, dass Sie die Mathematik von Hand tun kann

  • die Dichtefunktion der Verteilung Fisher Integrieren Sie die kumulative Verteilungsfunktion

    F (theta) = exp (K cos (theta zu bekommen)))/(exp (k) -exp (-k))

  • Der nächste Schritt besteht darin, die Funktion der inversen kumulativen Verteilungsfunktion F^(- 1) (y) zu finden. Diese Funktion erfüllt

    F (theta) = y < => F^(- 1) (y) = Theta

  • Ich denke, dass Sie die folgende bekommen.

    F^(- 1) (y) = arccos (log ((exp (k) -exp (-k)) * y)/K)

  • Draw y1, y2, y3, y4. .. aus einer gleichmäßigen Verteilung auf das Intervall [0, 1]

  • Nun sind die Zahlen F^(- 1) (y1), F^(- 1) (y2), F^(- 1) (y3), F^(- 1) (Y4) wird nach der Fisher Verteilung verteilt werden ..

+0

Danke für die Hilfe, die wirklich Sinn macht. So, jetzt kann ich Werte von Theta entsprechend der Fischerverteilung zeichnen, aber was bedeutet das in 3D? Wenn ich einen Mittelwertvektor habe, würde das Zeichnen eines Theta-Werts einen Kreis um diesen Vektor definieren. –

+0

Sie müssen eine zweite Zufallsvariable verwenden, um einen zufälligen Punkt auf dem Kreis zu finden. Sie sollten diese Variable aus einer gleichmäßigen Verteilung auf] 0; 2 * pi zeichnen. – nielsle

Verwandte Themen