[PYTHON] Second-order symmetric decomposition in the Lie-Trotter formula

Introduction

For the non-commutative operators $ X and Y $, the following Lie-Trotter formula holds.

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

Here, $ n $ is the number of decompositions (number of trotters). This formula is correct only up to the first order of $ h $ as a Taylor expansion for $ h $, and the censoring error is $ O (h ^ 2 / n) $ reflecting that. Here, the order can be increased by devising the shape of expansion.

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

This is called a quadratic symmetric decomposition, and the Taylor expansion is correct up to the order of $ h ^ 2 $. Reflecting that, the censoring error becomes $ O (h ^ 3 / n ^ 2) $.

This paper confirms this improvement in approximation accuracy.

The source is https://github.com/kaityo256/lie-trotter-sample At.

Source description

What you are doing is the same as previous article, so refer to that. For primary decomposition

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)

In the case of quadratic symmetric decomposition

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)

Just write. I don't think it's difficult.

result

The result of the second-order symmetric decomposition is as follows.

First, the time step $ h $ dependency of the censoring error. Let $ n $ be 1,2,4, and evaluate the censoring error with various $ h $ values for each.

h_2.png

It can be seen that the accuracy is improved to $ O (h ^ 3) $ regardless of the number of decompositions $ n $.

Next is the dependency of the number of decompositions $ n $. Hourly $ h $ is fixed at $ 1.0 $.

n_2.png

The error is $ O (1 / n ^ 2) $, which shows that the accuracy is also improved.

Summary

It was confirmed that the accuracy is improved by using the quadratic symmetric decomposition in the trotter decomposition. here,

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

If you write, the primary decomposition when $ n = 3 $ is

\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)

Can be written. Since $ U_X (h_1) U_X (h_2) = U_X (h_1 + h_2) $ holds, the quadratic symmetric decomposition is

\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)

And, compared to the first-order decomposition, the operator at the left end is moved to the right end by half. Even if $ n $ increases, the only difference between the two is this end. Isn't it strange that the approximation accuracy of operators increases linearly for both $ h $ and $ n $? [^ 1]

[^ 1]: People at work said, "It's a matter of course, isn't it common?"

Recommended Posts

Second-order symmetric decomposition in the Lie-Trotter formula
Examine the Lie-Trotter formula censoring error
Expressing "the most beautiful mathematical formula in the world" programmatically
LU decomposition in Python
Find the eigenvalues of a real symmetric matrix in Python