Im Folgenden soll die DMRG in der Matrix-Produkt-Schreibweise beschrieben werden. Hierzu wird zunächst das Grundproblem beschrieben, dann eine effizientere Art um den Erwartungswert zu bestimmen und schließlich ein gesamter Sweep-Step.
Das Grundproblem ist das Finden eines Zustands $\lvert\psi\rangle$ der \(\frac{\langle\psi\lvert\hat H\lvert\psi\rangle}{\langle\psi\lvert\psi\rangle}\) minimiert. Hierzu wird der Erwartungswert $\langle\psi\lvert\hat H\lvert\psi\rangle$ minimiert, während seine Normierung $\langle\psi\lvert\psi\rangle$ konstant bleibt.
Um die Minimierung des Erwartungswertes zu erreichen, wird der Variationsansatz verwendet. Hierzu wird, wie im Folgenden beschrieben, das Eigenwert-Problem an einem Platz gelöst; dies entspricht der Single-Site-DMRG. Dass das System auf diese Weise gegen den Grundzustand konvergiert, konnte bisher nicht allgemein gezeigt werden.
Wie bei der Single-Site-DMRG wird auch hier die Kette, für die Berechnung des Erwartungswertes, in drei Blöcke aufgeteilt:
\begin{align*}
\langle\psi\lvert\hat H\lvert\psi\rangle = & \sum_{\boldsymbol{\sigma, \sigma^\prime}}\langle\boldsymbol\sigma\lvert \underbrace{B^{\sigma_L^{\phantom\prime}*}\cdots B^{\sigma_{l+1}^{\phantom\prime}*}M^{\sigma_l^{\phantom\prime}*}A^{\sigma_{l-1}^{\phantom\prime}*}\cdots A^{\sigma_1^{\phantom\prime}*}}_{B^{\sigma_L^{\phantom\prime}*}\cdots A^{\sigma_1^{\phantom\prime}*}} \hat H \underbrace{A^{\sigma_1^{\prime}}\cdots A^{\sigma_{l-1}^{\prime}}M^{\sigma_l^{\prime}}B^{\sigma_{l+1}^{\prime}}\cdots B^{\sigma_L^{\prime}}}_{A^{\sigma_1^{\prime}}\cdots B^{\sigma_L^{\prime}}}\lvert\boldsymbol{\sigma^\prime}\rangle\newline
= & \sum_{\boldsymbol{\sigma, \sigma^\prime}}\sum_{\boldsymbol{\tilde\sigma, \tilde\sigma^\prime}}\langle\boldsymbol\sigma\lvert B^{\sigma_L^{\phantom\prime}*}\cdots A^{\sigma_1^{\phantom\prime}*} \lvert\boldsymbol{\tilde\sigma}\rangle W^{\tilde\sigma_1^{\phantom\prime},\tilde\sigma_1^\prime}\cdots W^{\tilde\sigma_L^{\phantom\prime},\tilde\sigma_L^\prime}\langle\boldsymbol{\tilde\sigma^\prime}\lvert A^{\sigma_1^{\prime}}\cdots B^{\sigma_L^{\prime}}\lvert\boldsymbol{\sigma^\prime}\rangle\newline
= & \sum_{\boldsymbol{\sigma, \sigma^\prime}}\sum_{\boldsymbol{\tilde\sigma, \tilde\sigma^\prime}}\underbrace{\langle\boldsymbol\sigma\lvert\boldsymbol{\tilde\sigma}\rangle}_{\delta_{\sigma, \tilde\sigma}} \sum_{a_i^{\phantom\prime}, a_i^\prime, b_i^{\phantom\prime}} B^{\sigma_L^{\phantom\prime}*}_{b_{L-1}^{\phantom\prime}, 1}\cdots A^{\sigma_1^{\phantom\prime}*}_{1, a_1^{\phantom\prime}} W^{\tilde\sigma_1^{\phantom\prime},\tilde\sigma_1^\prime}_{1, b_1^{\phantom\prime}}\cdots W^{\tilde\sigma_L^{\phantom\prime},\tilde\sigma_L^\prime}_{b_{L-1}^{\phantom\prime}, 1} A^{\sigma_1^{\prime}}_{1, a_1^\prime}\cdots B^{\sigma_L^{\prime}}_{a_{L-1}^\prime, 1}\underbrace{\langle\boldsymbol{\tilde\sigma^\prime}\lvert\boldsymbol{\sigma^\prime}\rangle}_{\delta_{\sigma^\prime, \tilde\sigma^\prime}}\newline
= & \sum_{a_{l-1}^{\phantom\prime},a_l^{\phantom\prime}}\sum_{a_{l-1}^{\prime}, a_{l}^\prime}\sum_{b_{l-1}^{\phantom\prime}, b_l^{\phantom\prime}}L^{a_{l-1}^{\phantom\prime}}_{a_{l-1}^{\prime}, b_{l-1}^{\phantom\prime}} \left(\sum_{\sigma^{\phantom\prime}_{l}, \sigma^\prime_{l}}M^{\sigma^{\phantom\prime}_{l}*}_{a_{l-1}^{\phantom\prime}, a_{l}^{\phantom\prime}}W^{\sigma_{l}^{\phantom\prime}, \sigma_{l}^\prime}_{b_{l-1}^{\phantom\prime}, b_{l}^{\phantom\prime}}M^{\sigma^{\prime}_{l}*}_{a_{l-1}^\prime, a_{l}^\prime}\right)R^{a_{l}^{\phantom\prime}}_{a_{l}^{\prime}, b_{l}^{\phantom\prime}}
\end{align*}
Hierbei repräsentiert $L^{a_{l-1}^{\phantom\prime}}_{a_{l-1}^{\prime}, b_{l-1}^{\phantom\prime}}$ die linke Seite, $R^{a_{l}^{\phantom\prime}}_{a_{l}^{\prime}, b_{l}^{\phantom\prime}}$ die rechte Seite und $\sum_{\sigma^{\phantom\prime}_{l}, \sigma^\prime_{l}}M^{\sigma^{\phantom\prime}_{l}*}_{a_{l-1}^{\phantom\prime}, a_{l}^{\phantom\prime}}W^{\sigma_{l}^{\phantom\prime}, \sigma_{l}^\prime}_{b_{l-1}^{\phantom\prime}, b_{l}^{\phantom\prime}}M^{\sigma^{\prime}_{l}*}_{a_{l-1}^\prime, a_{l}^\prime}$ den varriierbaren Platz $l$.
\begin{equation*}
L^{a_{l-1}^{\phantom\prime}}_{a_{l-1}^{\prime}, b_{l-1}^{\phantom\prime}}=\sum_{\{a_i^{\phantom\prime}, a_i^\prime, b_i^{\phantom\prime}; i<l-1\}}\left(\sum_{\sigma^{\phantom\prime}_1, \sigma^\prime_1}A^{\sigma^{\phantom\prime}_1*}_{1, a_1^{\phantom\prime}}W^{\sigma_1^{\phantom\prime}, \sigma_1^\prime}_{1, b_1}A^{\sigma^{\prime}_1}_{1, a_1^\prime}\right)\cdots\left(\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}_{b_{l-2}^{\phantom\prime}, b_{l-1}^{\phantom\prime}}A^{\sigma^{\prime}_{l-1}}_{a_{l-2}^\prime, a_{l-1}^\prime}\right)
\end{equation*}
\begin{equation*}
R^{a_{l}^{\phantom\prime}}_{a_{l}^{\prime}, b_{l}^{\phantom\prime}}=\sum_{\{a_i^{\phantom\prime}, a_i^\prime, b_i^{\phantom\prime}; i>l\}}\left(\sum_{\sigma^{\phantom\prime}_{l+1}, \sigma^\prime_{l+1}}B^{\sigma^{\phantom\prime}_{l+1}*}_{a_l^{\phantom\prime}, a_{l+1}^{\phantom\prime}}W^{\sigma_{l+1}^{\phantom\prime}, \sigma_{l+1}^\prime}_{b_l^{\phantom\prime}, b_{l+1}}B^{\sigma^{\prime}_{l+1}}_{a_l^{\prime}, a_{l+1}^\prime}\right)\cdots\left(\sum_{\sigma^{\phantom\prime}_{L}, \sigma^\prime_{L}}A^{\sigma^{\phantom\prime}_{L}*}_{a_{L-1}^{\phantom\prime}, 1}W^{\sigma_{L}^{\phantom\prime}, \sigma_{L}^\prime}_{b_{L-1}^{\phantom\prime}, 1}A^{\sigma^{\prime}_{L}}_{a_{L-1}^\prime, 1}\right)
\end{equation*}
Das Skalarprodukt \(\langle\psi\lvert\psi\rangle\) eines gemischt-normierten MPS lässt sich auf die Spur der nicht normierten Matrizen zusammenfassen:
\begin{align*}
\langle\psi\lvert\psi\rangle = &\sum_{\boldsymbol{\sigma, \sigma^\prime}}\langle\boldsymbol\sigma\lvert B^{\sigma_L^{\phantom\prime}*}\cdots B^{\sigma_{l+1}^{\phantom\prime}*}M^{\sigma_l^{\phantom\prime}*}\underbrace{A^{\sigma_{l-1}^{\phantom\prime}*}\cdots A^{\sigma_1^{\phantom\prime}*}A^{\sigma_1^{\prime}}\cdots A^{\sigma_{l-1}^{\prime}}}_{\mathbb{1}}M^{\sigma_l^{\prime}}B^{\sigma_{l+1}^{\prime}}\cdots B^{\sigma_L^{\prime}}\lvert\boldsymbol{\sigma^\prime}\rangle\newline
= &\sum_{\sigma_{l+1}^{\phantom\prime}, \ldots, \sigma_L^{\phantom\prime}}\sum_{a_l}\left(M^{\sigma_l^{\phantom\prime}*}M^{\sigma_l^{\phantom\prime}}\underbrace{B^{\sigma_{l+1}^{\prime}}\cdots B^{\sigma_L^{\prime}}B^{\sigma_L^{\phantom\prime}*}\cdots B^{\sigma_{l+1}^{\phantom\prime}*}}_{\mathbb{1}}\right)_{a_l, a_l}^{\phantom\prime}\newline
= &\sum_{\sigma_l^{\phantom\prime}}\text{Tr}\left(M^{\sigma_l^{\phantom\prime}*}M^{\sigma_l^{\phantom\prime}}\right)
\end{align*}
Wie bei der DMRG sollen die einzelnen Seiten wachsen und schrumpfen. Um vorhandene Daten weiterverwenden zu können, ist es notwendig, \(L\) und \(R\) iterativ aufbauen zu können. Da Matrixprodukte effektiver als Summen bestimmt werden können, ist auch ein Umschreiben in Matrixprodukte sinnvoll. Beides wird wie folgt erreicht:
\begin{align*}
L^{a_{l-1}^{\phantom\prime}}_{a_{l-1}^{\prime}, b_{l-1}^{\phantom\prime}}= &\sum_{a_{l-2}^{\phantom\prime}, a_{l-2}^\prime, b_{l-2}^{\phantom\prime}}L^{a_{l-2}^{\phantom\prime}}_{a_{l-2}^{\prime}, b_{l-2}^{\phantom\prime}}\left(\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}_{b_{l-2}^{\phantom\prime}, b_{l-1}^{\phantom\prime}}A^{\sigma^{\prime}_{l-1}}_{a_{l-2}^\prime, a_{l-1}^\prime}\right)\newline
= &\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}} \sum_{a_{l-2}^{\phantom\prime}, a_{l-2}^\prime}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}\left(\sum_{b_{l-2}}L^{a_{l-2}^{\phantom\prime}}_{a_{l-2}^{\prime}, b_{l-2}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}_{b_{l-2}^{\phantom\prime}, b_{l-1}^{\phantom\prime}}\right)A^{\sigma^{\prime}_{l-1}}_{a_{l-2}^\prime, a_{l-1}^\prime}\newline
= &\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}} \sum_{a_{l-2}^{\phantom\prime}, a_{l-2}^\prime}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}\left(L^{a_{l-2}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}\right)_{a_{l-2}^{\prime}, b_{l-1}^{\phantom\prime}}A^{\sigma^{\prime}_{l-1}}_{a_{l-2}^\prime, a_{l-1}^\prime}\newline
= &\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}} \sum_{a_{l-2}^{\phantom\prime}}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}\left(\sum_{a_{l-2}^\prime}\left(\left(L^{a_{l-2}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}\right)^t\right)_{b_{l-1}^{\phantom\prime}, a_{l-2}^{\prime}}A^{\sigma^{\prime}_{l-1}}_{a_{l-2}^\prime, a_{l-1}^\prime}\right)\newline
= &\sum_{\sigma^{\phantom\prime}_{l-1}, \sigma^\prime_{l-1}} \sum_{a_{l-2}^{\phantom\prime}}A^{\sigma^{\phantom\prime}_{l-1}*}_{a_{l-2}^{\phantom\prime}, a_{l-1}^{\phantom\prime}}\left(\left(L^{a_{l-2}^{\phantom\prime}}W^{\sigma_{l-1}^{\phantom\prime}, \sigma_{l-1}^\prime}\right)^tA^{\sigma^{\prime}_{l-1}}\right)_{b_{l-1}^{\phantom\prime}, a_{l-1}^\prime}\newline
\end{align*}
Zu beachten ist hier, dass \(L^{a_{0}^{\phantom\prime}}\) ein Skalar mit Wert \(1\) ist.
Analog lässt sich \(R^{a_l^{\phantom\prime}}_{a_l^\prime, b_l}\), mit \(R^{a_{L}^{\phantom\prime}}=1\), iterativ und mit Matrixmultiplikationen bestimmen:
\begin{equation*}
R^{a_{l}^{\phantom\prime}}_{a_{l}^{\prime}, b_{l}^{\phantom\prime}}= \sum_{\sigma^{\phantom\prime}_{l+1},\sigma^\prime_{l+1}}\sum_{a_{l+1}^{\phantom\prime}}B^{\sigma^{\phantom\prime}_{l+1}*}_{a_{l}^{\phantom\prime}, a_{l+1}^{\phantom\prime}}\left(W^{\sigma_{l+1}^{\phantom\prime}, \sigma_{l+1}^\prime}\left(B^{\sigma^{\prime}_{l+1}}R^{a_{l+1}^{\phantom\prime}}\right)^t\right)_{b_{l}^{\phantom\prime}, a_{l}^\prime}
\end{equation*}
Um die optimalen Matrizen für einen Platz \(l\) zu finden, muss die Lagrange-Gleichung \begin{equation*} L = \langle\psi\lvert\hat H\lvert\psi\rangle - \lambda\left(\langle\psi\lvert\psi\rangle-1\right) \end{equation*} nach \(M^{\sigma_l}_{a_{l-1}^{\phantom\prime}, a_l^{\phantom\prime}}\) abgeleitet und null gesetzt werden. Hieraus erhält man dann: \begin{align*} 0 \stackrel{!}{=} & \frac{\partial L}{\partial M^{\sigma_L^{\phantom\prime}}_{a_{l-1}^{\phantom\prime}, a_l^{\phantom\prime}}} = \frac{\partial}{\partial M^{\sigma_L^{\phantom\prime}}_{a_{l-1}^{\phantom\prime}, a_l^{\phantom\prime}}}\left(\langle\psi\lvert\hat H\lvert\psi\rangle\right)-\lambda\frac{\partial}{\partial M^{\sigma_L^{\phantom\prime}}_{a_{l-1}^{\phantom\prime}, a_l^{\phantom\prime}}}\left(\langle\psi\lvert\lvert\psi\rangle\right)\newline = & \sum_{\sigma_l^\prime}\sum_{a_{l-1}^\prime, a_l^\prime}\sum_{b_{l-1}^{\phantom\prime}, b_l^{\phantom\prime}} L_{a_{l-1}^\prime, b_{l-1}^{\phantom\prime}}^{a_{l-1}^{\phantom\prime}} W_{b_{l-1}^{\phantom\prime}, b_l^{\phantom\prime}}^{\sigma_l^{\phantom\prime}, \sigma_l^\prime} R_{a_l^\prime, b_l^{\phantom\prime}}^{a_l^{\phantom\prime}}M_{a_{l-1}^\prime, a_l^\prime}^{\sigma_l^\prime} - \lambda\sum_{a_{l-1}^\prime, a_l^\prime} M^{\sigma_l^{\prime}}_{a_{l-1}^\prime, a_l^\prime} \end{align*} Führt man \(H_{\text{Eff}(\sigma_l^{\phantom\prime}a_{l-1}^{\phantom\prime}a_l^{\phantom\prime})(\sigma_l^{\prime}a_{l-1}^{\prime}a_l^{\prime})}=\sum_{b_{l-1}^{\phantom\prime}, b_l^{\phantom\prime}}L_{a_{l-1}^\prime, b_{l-1}^{\phantom\prime}}^{a_{l-1}^{\phantom\prime}} W_{b_{l-1}^{\phantom\prime}, b_l^{\phantom\prime}}^{\sigma_l^{\phantom\prime}, \sigma_l^\prime} R_{a_l^\prime, b_l^{\phantom\prime}}^{a_l^{\phantom\prime}}\) und \(\nu_{\sigma_l^{\phantom\prime}a_{l-1}^{\phantom\prime}a_l^{\phantom\prime}}^{\phantom\prime}=M_{a_{l-1}^{\phantom\prime}, a_l^{\phantom\prime}}^{\sigma_l^{\phantom\prime}}\) ein, so erhält man ein Eigenwert-Problem: \begin{equation*} H_{\text{Eff}}\nu - \lambda\nu = 0 \end{equation*} Dieses kann, auf Grund der geringen Dimension von \(H_{\text{Eff}}\), exakt gelöst werden. Der kleinste Eigenwert entspricht dem optimierten Wert für die Grundzustandsenergie \(E_0\) und der dazugehörige Eigenvektor \(\nu_0\) liefert die optimierten Matrizen \(M^{\sigma_L}\).
Um nun den Zustand \(\lvert \psi \rangle\) iterativ an allen Plätzen zu verbessern und gleichzeitig viele Daten wiederverwenden zu können, wird folgendermaßen vorgegangen:
Zunächst werden die Matrizen des Zustands mit beliebigen Werten gefüllt und anschließend rechts-normiert. Während des rechts-Normierens werden die jeweiligen \(R\)-Matrizen erzeugt. Darüber hinaus wird der Hamilton-MPO erzeugt. Der folgende Sweep beginnt nun am Platz \(l=1\) und der MPS hat folgende Form: \begin{equation*} M^{\sigma_1}B^{\sigma_{2}}\cdots B^{\sigma_L} \end{equation*}
Als erstes wird \(H_{\text{Eff}}\) am Platz \(l\), wie im vorherigen Abschnitt beschrieben, gebildet und das Eigenwert-Problem gelöst. Anschließend wird die Matrix \(M^{\sigma_l}\) durch den umgeformten kleinsten Eigenvektor ersetzt (1). Um die links-normierte Seite zu vergrößern, wird auf das aktualisierte \(\tilde M^{\sigma_l}\) die SVD angewandt und das \(U\) als neues \(A^{\sigma_l}\) gespeichert, während das \(S V^{\dagger}\) an die Matrix \(B^{\sigma_{l+1}}\) multipliziert wird, womit die rechts-normierte Seite verkleinert wird (2). Folgend ist der Vorgang veranschaulicht: \begin{align*} A^{\sigma_1}\cdots A^{\sigma_{l-1}} M^{\sigma_{l}} B^{\sigma_{l+1}}\cdots B^{\sigma_{L}} &\xrightarrow{(1)}A^{\sigma_1}\cdots A^{\sigma_{l-1}} \tilde{M}^{\sigma_{l}} B^{\sigma_{l+1}}\cdots B^{\sigma_{L}}\newline &\xrightarrow{(2)}A^{\sigma_1}\cdots A^{\sigma_{l}} M^{\sigma_{l+1}} B^{\sigma_{l+2}}\cdots B^{\sigma_{L}} \end{align*} Aus den Singulärwerten (Diagonaleinträge der Matrix \(S\)) kann die Dichtematrix \(\rho=S^2\) und die “von Neumann”-Entanglement-Entropie \(S_{\text{vN}}(\lvert\psi\rangle)=-\text{Tr}\rho \log_2 \rho\) berechnet werden. Anschließend wird zum nächsten Platz gesprungen (\(l\rightarrow l+1\)).
Um einen kompletten Sweep durchzuführen, wird Schritt 2 wiederholt bis \(l=L\) erreicht ist. Der MPS ist anschließend links-normiert und hat folgende Form: \begin{equation*} A^{\sigma_{1}}\cdots A^{\sigma_{L-1}}M^{\sigma_L} \end{equation*}
Analog zu Schritt 3 wird der Sweep nach links durchgeführt. Er beginnt bei \(l=L\) und endet bei \(l=1\).
Schließlich werden die Schritte 3 und 4 wiederholt, bis ein Abbruchkriterium (z.B. Konvergenz, max. Anzahl an Sweeps) erreicht ist.
©: This site was created by Thomas Köhler