Für einen albernen Bildschirmschoner, den ich entwickeln möchte, möchte ich zufällig ein divergenzfreies 2D-Array von 2D-Vektoren generieren und dann ein linienintegrales Faltungsdiagramm erstellen. Ich habe gehört , dass ein Weg , dies zu tun ist , zufälliges Rauschen zu erzeugen, und dann die solenoidal Komponente seiner Helmholtz-Hodge Zersetzung herausragen. Um dies zu tun, habe ich versucht, die folgenden Argumente zu verwenden:
Eine Funktion hat eine Helmholtz-Hodge-Zerlegung wobei und wobei sind. Nehmen wir zunächst an, dass die harmonische Komponente verschwindet.
Im Fourierraum wird dies zu und wir können eine Solenoidprojektion definieren Operator im Fourierraum als , der über eine Funktion auf seine Solenoidkomponente projiziert
Ich habe dann versucht, dies in Mathematica zu implementieren und es auf ein Zufallsarray anzuwenden . Zuerst generiere ich das zufällige Array und wende die FFT auf jede der beiden Komponenten an:
arr = RandomReal[{-1, 1}, {2, 21, 21}];
fArr = Fourier /@ arr;
Ich definiere dann als Funktion des Array-Index:
k[k1_, k2_] := Mod[{k1 - 1, k2 - 1}, 21, -10]/21;
Dann führe ich die Projektion auf die Fourier-Komponenten durch (die Singularität bei wird mithilfe einer Anweisung in Ruhe gelassen ):If
dat = Transpose[
Table[If[k1 == 1 && k2 == 1, fArr[[;; , k1, k2]],
fArr[[;; , k1, k2]] -
k[k1, k2] (k[k1, k2].fArr[[;; , k1, k2]])/(k[k1, k2].k[k1,
k2])], {k1, 21}, {k2, 21}], {2, 3, 1}];
Dann habe ich die beiden Komponenten iFFT:
projArr = InverseFourier /@ dat;
Dies ergibt ein rein reales Array, und ich würde naiv erwarten, dass das Ergebnis eine Annäherung an . Meine Frage ist:
- Inwiefern nähert sich das Ergebnis ?
Angeblich ist die Helmholtz-Hodge-Zerlegung von 2D-Daten eine nicht triviale Aufgabe, da Chris Beaumonts HH_DECOMP- Routine FFTs verwenden soll, um die Helmholtz-Hodge-Zerlegung durchzuführen, aber er sagt auch (in den Kommentaren oben im Code), dass die Methode scheint ungenau. Ebenso gibt es kompliziertere Variationsmethoden, um Helmholtz-Hodge-Zerlegungen von 2D-Daten durchzuführen , was darauf hindeutet, dass die einfachere FFT-Methode irgendwie unzureichend ist. Warum? Was macht die FFT-Methode falsch? Und ist es falsch anzunehmen, dass die harmonische Komponente für mein zufälliges Rauschen verschwindet?
(1): Stabile Flüssigkeiten , Jos Stam.
(2): Merkmalserkennung in Vektorfeldern mit der Helmholtz-Hodge-Zerlegung , Alexander Wiebel, Seite 12.
(3): Diskrete Multiskalen-Vektorfeldzerlegung , Yiying Tong.