Skip to main content
IBM Quantum Platform

TEBDEvolver

class TEBDEvolver(evolution_state, *args, order=2, **kwargs)

GitHub

Bases : TEBD, Evolver

Un algorithme TEBD pour l'évolution d'un MPO interne.

Comme indiqué plus en détail dans quimb_tebdcette extension de l'application existante de quimbquimb.tensor.TEBD fait évoluer dans le temps un opérateur de produit matriciel interne (MPO) plutôt que l'état de produit matriciel conventionnel (MPS).

Plus concrètement, l'objet interne est censé être un MPOState.

Avertissement

L'API de cette classe est en fait beaucoup plus large que ce qui est montré ici, car elle hérite de méthodes supplémentaires de la quimb.tensor.TEBD classe de base. Cependant, nous ne reproduisons pas cette API ici.

Initialiser une TEBDEvolver instance.

Paramètres

  • evolution_state (MPOState | MatrixProductState) –

    une référence à l'état de l'évolution temporelle. Cela écrase l'argument p0 de la classe sous-jacente quimb.tensor.TEBD sous-jacente.

    Avertissement

    Contrairement au comportement par défaut, cet état ne sera PAS canonisé. Au lieu de cela, il est pris tel quel et conservé par référence (c'est-à-dire qu'aucune copie n'est créée). Cela garantit que le même objet peut être partagé entre deux instances de cette classe, comme l'exige l'algorithme DynamicMPF algorithme.

  • args - tout autre argument positionnel sera transmis au constructeur quimb.tensor.TEBD constructeur.

  • order (int) – l'ordre de la formule Suzuki-Trotter intégrée à utiliser pendant l'évolution du temps. Ce sera la valeur transmise à la méthode quimb.tensor.TEBD.step() méthode.

  • kwargs - tout autre argument de type mot-clé sera transmis au quimb.tensor.TEBD constructeur.


Attributs

conjugate

Retourne si cette instance de time-evolver agit sur le côté droit.

evolved_time

Renvoie le temps d'évolution actuel.


Méthodes

step

step()

GitHub

Effectuer un seul pas de temps de la TEBD.

Il s'agit essentiellement d'appeler quimb.tensor.TEBD.step() et transmet la valeur de l'attribut order qui a été fourni lors de la construction.

Type de retour

Aucun

sweep

sweep(direction, dt_frac, dt=None, queue=False)

GitHub

Effectuer un balayage unique de l'algorithme TEBD [1.]

L'algorithme TEBD met à jour les liens pairs et impairs du réseau tensoriel sous-jacent en alternance. Dans l'implémentation de la classe de base quimb.tensor.TEBD cette opération est réalisée sous la forme de "balayages" alternés dans les directions gauche et droite sur l'état interne.

Nous écrasons le comportement de cette méthode dans cette sous-classe, afin d'appeler la méthode spécialisée gate_split() spécialisée.

Paramètres

  • direction (Literal['left', 'right']) – la direction du balayage. Il doit s'agir de l'une des chaînes littérales suivantes : "left" ou "right".
  • dt_frac (float) – la fraction du pas de temps interne (dt) pour laquelle l'évolution temporelle doit avoir lieu. C'est ainsi que toute formule Suzuki-Trotter intégrée spécifie son fractionnement.
  • dt (float | None) – une valeur facultative pour remplacer le pas de temps interne.
  • queue (bool) – en réglant ce paramètre sur True , vous obtiendrez un NotImplementedError.

Augmentations

Type de retour

Aucun

Références

[1] : https://en.wikipedia.org/wiki/Time-evolving \Nblock\Ndecimation

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.