Qubit
qiskit_addon_sqd.qubit
Funktionen zur Behandlung von Quantenproben.
solve_qubit
solve_qubit(bitstring_matrix, hamiltonian, *, verbose=False, **scipy_kwargs)
Finden Sie die Energien und Eigenzustände eines Hamiltonianers, projiziert in einen Unterraum.
Der Unterraum wird durch eine Sammlung von Berechnungsbasiszuständen definiert, die durch die Bitstrings (Zeilen) in bitstring_matrix spezifiziert werden. Die bitstring_matrix wird in dieser Funktion sortiert und von Duplikaten befreit, da der zugrunde liegende Solver diese Struktur benötigt.
Diese Funktion ruft scipy.sparse.linalg.eigsh für die Diagonalisierung auf.
Parameter
-
bitstring_matrix (ndarray) – Ein 2D Array mit
boolDarstellungen von Bitwerten, wobei jede Zeile einen einzelnen Bitstring darstellt. Dieser Satz von Bitstrings gibt den Unterraum an, in den diehamiltonianprojiziert und diagonalisiert wird. -
hamiltonian (SparsePauliOp) – Ein Hamiltonian, der als Pauli-Operator spezifiziert ist.
-
verbose (bool) – Angabe, ob die Stufe des Unterprogramms gedruckt werden soll.
-
**scipy_kwargs -
Schlüsselwortargumente zur Übergabe an scipy.sparse.linalg.eigsh.
Rückgabe
- 1D array mit den Eigenwerten
- 2D array mit den Eigenvektoren. Jede Spalte steht für einen Eigenvektor.
Erhöht
ValueError - Bitstrings (Zeilen) in bitstring_matrix müssen die Länge < 64 haben.
Rückgabetyp
project_operator_to_subspace
project_operator_to_subspace(bitstring_matrix, hamiltonian, *, verbose=False)
Projizieren Sie einen Pauli-Operator auf einen Hilbert-Unterraum, der durch die Zustände der Berechnungsbasis (Zeilen) in bitstring_matrix definiert ist.
Die spärliche Ausgangsmatrix, A, stellt eine NxN Matrix s.t dar. N ist die Anzahl der Zeilen in bitstring_matrix. Die Zeilen von A stellen die Eingabekonfigurationen dar, und die Spalten stellen die mit der Konfiguration in der entsprechenden Zeile verbundene Komponente dar. Die Nicht-Null-Elemente der Matrix stellen die komplexen Amplituden dar, die mit den verbundenen Komponenten verbunden sind.
Die Bitstrings in bitstring_matrix müssen eindeutig sein und in aufsteigender Reihenfolge nach ihrer vorzeichenlosen Ganzzahlendarstellung sortiert werden. Andernfalls wird die Projektion falsche Ergebnisse liefern. Diese Funktion prüft nicht explizit auf Eindeutigkeit und Reihenfolge, da dies sehr zeitaufwändig sein kann. Siehe qiskit_addon_sqd.qubit.sort_and_remove_duplicates() für eine einfache Methode, um sicherzustellen, dass Ihre Bitstring-Matrix gut formatiert ist.
Diese Funktion stützt sich auf jax , um einige Berechnungen effizient durchzuführen. jax konvertiert die Bit-Arrays in int64_t, was bedeutet, dass die Bit-Arrays in bitstring_matrix nicht länger als 63 sein dürfen.
Parameter
- bitstring_matrix (ndarray) – Ein 2D Array mit
boolDarstellungen von Bitwerten, wobei jede Zeile einen einzelnen Bitstring darstellt. Dieser Satz von Bitstrings gibt den Unterraum an, in den diehamiltonianprojiziert und diagonalisiert wird. - hamiltonian (SparsePauliOp) – Ein Pauli-Operator zur Projektion auf einen Hilbert-Unterraum, definiert durch
bitstring_matrix. - verbose (bool) – Angabe, ob die Stufe des Unterprogramms gedruckt werden soll.
Rückgabe
A scipy.sparse.coo_matrix der den auf den Unterraum projizierten Operator darstellt. Die Zeilen stellen die Eingabekonfigurationen dar, die Spalten die mit der Konfiguration in der entsprechenden Zeile verbundene Komponente. Die Nicht-Null-Elemente der Matrix stellen die komplexen Amplituden dar, die mit den Paaren verbundener Komponenten verbunden sind.
Erhöht
ValueError - Bitstrings (Zeilen) in bitstring_matrix müssen die Länge < 64 haben.
Rückgabetyp
spmatrix
sort_and_remove_duplicates
sort_and_remove_duplicates(bitstring_matrix)
Sortieren einer Bitstring-Matrix und Entfernen doppelter Einträge.
Die niedrigsten Bitstring-Werte werden in den Zeilen mit dem niedrigsten Index platziert.
Parameter
bitstring_matrix (ndarray) – Ein 2D Array mit bool Darstellungen von Bitwerten, wobei jede Zeile einen einzelnen Bitstring darstellt.
Rückgabe
Sortierte Version von bitstring_matrix ohne wiederholte Zeilen.
Rückgabetyp
matrix_elements_from_pauli
matrix_elements_from_pauli(bitstring_matrix, pauli)
Finden Sie die spärlichen Matrixelemente eines Pauli-Operators in dem durch die Bitstrings definierten Unterraum.
Die durch die Ausgänge definierte dünnbesetzte Matrix, A, stellt eine NxN Matrix s.t dar. N ist die Anzahl der Zeilen in bitstring_matrix. Die Zeilen von A stellen die Eingabekonfigurationen dar, und die Spalten stellen die mit der Konfiguration in der entsprechenden Zeile verbundene Komponente dar. Die Ausgabe-Arrays definieren die dünnbesetzte Matrix A wie folgt:
A[rows[k], cols[k]] = amplutides[k].
Die Bitstrings in bitstring_matrix müssen eindeutig sein und in aufsteigender Reihenfolge nach ihrer vorzeichenlosen Ganzzahlendarstellung sortiert werden. Andernfalls wird die Projektion falsche Ergebnisse liefern. Diese Funktion prüft nicht explizit auf Eindeutigkeit und Reihenfolge, da dies sehr zeitaufwändig sein kann. Siehe qiskit_addon_sqd.qubit.sort_and_remove_duplicates() für eine einfache Methode, um sicherzustellen, dass Ihre Bitstring-Matrix gut formatiert ist.
Diese Funktion stützt sich auf jax , um einige Berechnungen effizient durchzuführen. jax konvertiert die Bit-Arrays in int64_t, was bedeutet, dass die Bit-Arrays in bitstring_matrix nicht länger als 63 sein dürfen.
Parameter
- bitstring_matrix (ndarray) – Ein 2D Array mit
boolDarstellungen von Bitwerten, wobei jede Zeile einen einzelnen Bitstring darstellt. Die Bitstrings in der Matrix müssen nach ihren vorzeichenlosen Ganzzahldarstellungen sortiert werden. Andernfalls wird die Projektion falsche Ergebnisse liefern. - pauli (Pauli) – Ein Pauli-Operator, für den verbundene Elemente zu finden sind
Rückgabe
- Die komplexen Amplituden, die den Matrixelementen ungleich Null entsprechen
- Die Zeilenindizes, die den Matrixelementen ungleich Null entsprechen
- Die Spaltenindizes der Matrixelemente, die nicht Null sind
Erhöht
ValueError - Bitstrings (Zeilen) in bitstring_matrix müssen die Länge < 64 haben.
Rückgabetyp