[PYTHON] Symmetrische Zerlegung zweiter Ordnung in der Lie-Trotter-Formel

Einführung

Für die nicht austauschbaren Operatoren $ X und Y $ gilt die folgende Lie-Trotter-Formel.

\exp(h(X+Y)) = \left( \exp(hX/n)\exp(hY/n) \right)^n + O\left(\frac{h^2}{n}\right)

Hier ist $ n $ die Anzahl der Zerlegungen (Anzahl der Traber). Diese Formel ist nur bis zur ersten Ordnung von $ h $ als Taylor-Erweiterung für $ h $ korrekt, und der Cutoff-Fehler ist $ O (h ^ 2 / n) $, was dies widerspiegelt. Hier kann die Reihenfolge durch Festlegen der Expansionsform erhöht werden.

\exp(h(X+Y)) = \left( \exp(hX/2n)\exp(hY/n)\exp(hX/2n) \right)^n + O\left(\frac{h^3}{n^2}\right)

Dies wird als quadratische symmetrische Zerlegung bezeichnet, und die Taylor-Expansion ist bis zur Größenordnung von $ h ^ 2 $ korrekt. In Anbetracht dessen wird der Grenzfehler zu $ O (h ^ 3 / n ^ 2) $.

Dieses Papier bestätigt diese Verbesserung der Approximationsgenauigkeit.

Die Quelle ist https://github.com/kaityo256/lie-trotter-sample Beim.

Quellenbeschreibung

Was Sie tun, ist dasselbe wie vorheriger Artikel. Zur primären Zersetzung

def trotter(X,Y,Z,h,n):
    eZ = calc_exp(Z,h)
    eX = calc_exp(X,h/n)
    eY = calc_exp(Y,h/n)
    S = np.diag(np.ones(d))
    eXeY = eX.dot(eY)
    for i in range(n):
        S = S.dot(eXeY)
    return linalg.norm(eZ - S)/linalg.norm(eZ)

Im Falle einer quadratischen symmetrischen Zerlegung

def trotter2nd(X,Y,Z,h,n):
    eZ = calc_exp(Z,h)
    eX = calc_exp(X,h/n*0.5)
    eY = calc_exp(Y,h/n)
    S = np.diag(np.ones(d))
    eXeYeX = eX.dot(eY.dot(eX))
    for i in range(n):
        S = S.dot(eXeYeX)
    return linalg.norm(eZ - S)/linalg.norm(eZ)

Einfach schreiben. Ich denke nicht, dass es schwierig ist.

Ergebnis

Die Ergebnisse der quadratischen symmetrischen Zerlegung sind wie folgt.

Zunächst die Zeitschritt $ h $ Abhängigkeit des Cutoff-Fehlers. Sei $ n $ 1,2,4 und bewerte den Cutoff-Fehler mit verschiedenen $ h $ -Werten für jeden.

h_2.png

Es ist ersichtlich, dass die Genauigkeit unabhängig von der Anzahl der Zerlegungen $ n $ auf $ O (h ^ 3) $ verbessert wird.

Als nächstes folgt die Abhängigkeit der Anzahl der Zerlegungen $ n $. Stündlich $ h $ ist auf $ 1.0 $ festgelegt.

n_2.png

Der Fehler ist $ O (1 / n ^ 2) $, was zeigt, dass auch die Genauigkeit verbessert wird.

Zusammenfassung

Es wurde bestätigt, dass die Genauigkeit durch Verwendung der quadratischen symmetrischen Zerlegung bei der Traberzerlegung verbessert wird. Hier,

\begin{align}
U_X(h) &= \equiv \exp(h X) \\
U_Y(h) &= \equiv \exp(h Y)
\end{align}

Wenn Sie schreiben, ist die primäre Zerlegung, wenn $ n = 3 $ ist

\exp(h(X+Y)) \sim U_X(h/3)U_Y(h/3)U_X(h/3)U_Y(h/3)U_X(h/3)U_Y(h/3)

Kann geschrieben werden. Da $ U_X (h_1) U_X (h_2) = U_X (h_1 + h_2) $ gilt, ist die quadratische symmetrische Zerlegung

\exp(h(X+Y)) \sim U_X(h/6)U_Y(h/3)U_X(h/3)U_Y(h/3)U_X(h/3)U_Y(h/3) U_X(h/6)

Und im Vergleich zur Zerlegung erster Ordnung wird der Operator ganz links um die Hälfte zum Ende ganz rechts verschoben. Selbst wenn $ n $ zunimmt, ist der einzige Unterschied zwischen den beiden dieses Ende. Ist es nicht seltsam, dass sich die Approximationsgenauigkeit des Operators sowohl für $ h $ als auch für $ n $ linear erhöht? [^ 1]

[^ 1]: Leute bei der Arbeit sagten: "Es ist eine Selbstverständlichkeit, ist es nicht üblich?"

Recommended Posts

Symmetrische Zerlegung zweiter Ordnung in der Lie-Trotter-Formel
Untersuchen Sie den Lie-Trotter-Formel-Cutoff-Fehler
LU-Zerlegung in Python
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python