Erste Schritte beim Quantencomputing mit MATLAB
Mit dem MATLAB Support Package for Quantum Computing können Sie Quantenalgorithmen entwickeln, simulieren und ausführen.
| 1-Qubit-Gatter | |||
| Wenden Sie ein 1-Qubit-Gatter in einem Quantenschaltkreis an. Der Wert in Klammern () steht für den Qubit-Index, auf den das Gatter angewendet wird. | |||
| Quantenschaltkreis-Objekt | Plot | Matrix | |
|---|---|---|---|
| Syntax | >> qc=quantumCircuit(xGate(1)) |
|
>> getMatrix(qc) |
| Ausgabe |
|
|
|
| 1-Qubit-Gatter | Beschreibung |
|---|---|
|
xGate = π-Rotation um die x-Achse auf Qubit 1 |
|
yGate = π-Rotation um die y-Achse auf Qubit 1 |
|
zGate = π-Rotation um die z-Achse auf Qubit 1 |
|
sGate = π/2 positive Rotation um die z-Achse |
|
tGate = π/4 positive Rotation um die z-Achse |
|
tiGate = π/4 negative Rotation um die z-Achse |
|
hGate = Hadamard-Gatter |
|
idGate = Identitätsgatter (tut nichts) |
Die Rotationsgatter sind Gatter mit einem Qubit und zwei Eingabeargumenten. Das Erste ist der Qubit-Index, auf den das Gatter angewendet wird, und das Zweite ist der Rotationswinkel oder die Rotationsphase (θ) in Radian.
Parametrisiertes 1-Qubit-Gatter |
Beschreibung |
|
rxGate = Rotationsgatter an der x-Achse |
|
ryGate = Rotationsgatter an der y-Achse |
|
rzGate = Rotationsgatter an der z-Achse |
|
r1Gate = Rotationsgatter an der z-Achse mit globaler Phase |
Gatter mit einem Kontroll-Qubit
Wenden Sie ein Gatter mit einem Kontroll-Qubit auf einen Quantenschaltkreis an. Diese Gatter haben zwei Argumente in Klammern (). Das Erste ist das Kontroll-Qubit und das Zweite ist das Ziel-Qubit. Ist das Kontroll-Qubit im Zustand |0>, tut das Gatter nichts. Ist das Kontroll-Qubit im Zustand |1>, wirkt das angegebene Gatter am Ziel-Qubit. >> cxGate(control,target)
Qubit-Index 1: Kontroll-Qubit
Qubit-Index 2: Ziel-Qubit
Die kontrollierten Rotationsgatter sind zwei Qubit-Gatter mit drei Eingabeargumenten. Das Erste ist das Kontroll-Qubit, das Zweite ist das Ziel-Qubit und das Dritte ist der Rotationswinkel oder die Rotationsphase (θ) in Radian.
2-Qubit-Gatter |
Beschreibung |
|
cxGate oder cnotGate = π-Rotation um die x-Achse zu Qubit 2, falls Qubit 1 in Zustand |1> ist |
|
cyGate = π-Rotation um die y-Achse zu Qubit 2, falls Qubit 1 im Zustand |1> ist |
|
czGate = π-Rotation um die z-Achse zu Qubit 2, falls Qubit 1 im Zustand |1> ist |
|
chGate = kontrolliertes Hadamard-Gatter |
Parametrisiertes 2-Qubit-Gatter |
Beschreibung |
|
crxGate = kontrolliertes Rotationsgatter an der x-Achse |
|
cryGate = kontrolliertes Rotationsgatter an der y-Achse |
|
crzGate = kontrolliertes Rotationsgatter an der z-Achse |
|
cr1Gate = kontrolliertes Rotationsgatter an der z-Achse mit globaler Phase |
Spezialgatter
Gatter |
Beschreibung |
compositeGate (qc, [1,2]) |
Erstellt ein Verbundgatter aus einem inneren Quantenschaltkreis und gibt ein CompositeGate-Objekt zurück. qc ist der innere Quantenschaltkreis im Beispiel. |
|
Kontrolliertes kontrolliertes x-Gatter (CCNOT- oder Toffoli-Gatter) |
mcxGate(1:3,4,5) |
Mehrfach kontrolliertes x-Gatter Das erste Argument sind die drei Kontroll-Qubits (1,2,3), das zweite Argument ist ein Ziel-Qubit (4) und das dritte Argument ist ein Ancilla-Qubit (5). Dieses Gatter wirkt auf ein einzelnes Ziel-Qubit basierend auf den Zuständen der Kontroll-Qubits, mit einer Anzahl von Ancilla-Qubits, die die Anzahl der einfachen Gatter bestimmt |
|
Quanten-Fourier-Transformation (QFT)-Gatter |
In den unten stehenden Gattern sind das erste und zweite Argument die Qubit-Indizes und das dritte Argument ist die Phase (θ), außer bei swapGate, das zwei Argumente besitzt. Das Tauschen der beiden Ziel-Qubits in allen unten stehenden Gattern bewirkt keine Änderung der Gatteroperation.
Gatter |
Beschreibung |
|
Ising-XX-Kopplungsgatter |
|
Ising-YY-Kopplungsgatter |
|
Ising-ZZ-Kopplungsgatter |
|
Tauscht die Werte der Qubits |
| Operation des Quantenschaltkreises | ||
Operation |
Beispiel |
Ausgabe |
|
|
|
|
|
|
getMatrix = Matrixdarstellung eines Quantenschaltkreises oder Gatters |
>> getMatrix(bell) |
|
generateQASM = QASM-Code generieren |
>> generateQASM(bell) |
|
simulate(circuit, inputState), Schaltkreis simulieren und anfänglichen Quantenzustand des Schaltkreises spezifizieren und QuantumState-Objekt zurückgeben |
>> simulate(bell) |
|
unpack = Verbundgatter innerhalb eines Quantenschaltkreises entpacken |
|
|
Simulierte Operationen des Quantenschaltkreises |
||
Operation |
Beispiel |
Ausgabe |
Quantenzustand des Schaltkreises initialisieren, wo Qubit 1 (oberstes Qubit im Schaltkreis-Plot) auf |1> und Qubit 2 auf |0> gesetzt ist |
S=simulate(bell,"10") |
|
Basiszustände der Ausgabe und ihre Amplituden anzeigen |
|
|
finalen Zustand des Schaltkreises anzeigen, z. B. die Basis, in der jedes Qubit darzustellen ist |
|
|
mögliche Zustände und Wahrscheinlichkeit des Messens jedes Zustands anzeigen |
|
states = "00" P= |
| auf Zufallsbasis den Quantenzustand des Schaltkreises mit beliebiger Anzahl von Messungen (Shots) abtasten |
|
|
Funktion |
Beschreibung |
|
mit einem Amazon Braket-Gerät verbinden, dabei Gerätenamen, Region und S3-Bucket-Pfad zum Speichern von Ergebnissen angeben |
|
mit einem IBM-Quantengerät verbinden, dabei Gerätenamen und Konto-Anmeldedaten angeben |
|
zusätzliche Informationen zum Gerät beziehen |
|
Task erstellen, um den Schaltkreis auf dem Gerät auszuführen |
|
Status eines Tasks überprüfen |
|
Ergebnis der Schaltkreisausführung abrufen |
|
>> plot(qftGate(1:3))
|
|
| >> GitHub mit Beispielen | ||