Share via


AssertQubitIsInStateWithinTolerance 작업

경고

이 설명서는 최신 QDK로 대체된 클래식 QDK를 참조합니다.

최신 QDK에 대한 API 설명서는 를 참조 https://aka.ms/qdk.api 하세요.

네임스페이스: Microsoft.Quantum.Diagnostics

패키지: Microsoft.Quantum.QSharp.Foundation

예상된 상태의 큐비트를 어설션합니다.

expected 는 복잡한 벡터인 $\ket{\psi} = \begin{bmatrix}a & b\end{bmatrix}^{\mathrm{T}}$를 나타냅니다. 각 $a$, $b$를 나타내는 튜플의 첫 번째 요소는 복소수의 실제 부분이며 두 번째 요소는 허수 부분입니다. 마지막 인수는 어설션이 만들어지는 허용 오차를 정의합니다.

operation AssertQubitIsInStateWithinTolerance (expected : (Microsoft.Quantum.Math.Complex, Microsoft.Quantum.Math.Complex), register : Qubit, tolerance : Double) : Unit is Adj + Ctl

입력

예상: (Complex,Complex)

각각 $\ket$ 및 $\ket{0}{1}$에 대한 복잡한 진폭이 필요합니다.

register: Qubit

상태를 어설션할 큐비트입니다. 이 큐비트는 할당된 다른 큐비트와 분리할 수 있고 얽혀 있지 않은 것으로 간주됩니다.

허용 오차: Double

실제 진폭이 예상에서 벗어나도록 허용되는 가산 허용 오차입니다. 자세한 내용은 아래 설명을 참조하세요.

출력: 단위

예제

using (qubits = Qubit[2]) {
    // Both qubits are initialized as |0〉: a=(1 + 0*i), b=(0 + 0*i)
    AssertQubitIsInStateWithinTolerance((Complex(1., 0.), Complex(0., 0.)), qubits[0], 1e-5);
    AssertQubitIsInStateWithinTolerance((Complex(1., 0.), Complex(0., 0.)), qubits[1], 1e-5);
    Y(qubits[1]);
    // Y |0〉 = i |1〉: a=(0 + 0*i), b=(0 + 1*i)
    AssertQubitIsInStateWithinTolerance((Complex(0., 0.), Complex(0., 1.)), qubits[1], 1e-5);
}

설명

다음 수학 코드를 사용하여 mi, mx, my, mz에 대한 식을 확인할 수 있습니다.

{Id, X, Y, Z} = Table[PauliMatrix[k], {k, 0, 3}];
st = {{ reA + I imA }, { reB + I imB} };
M = st . ConjugateTranspose[st];
mx = Tr[M.X] // ComplexExpand;
my = Tr[M.Y] // ComplexExpand;
mz = Tr[M.Z] // ComplexExpand;
mi = Tr[M.Id] // ComplexExpand;
2 m == Id mi + X mx + Z mz + Y my // ComplexExpand // Simplify

허용 오차는 $\langle\psi|\psi\rangle = x_1 I + x_2 X + x_1 정의된 3차원 실제 벡터 사이의 $L_{\infty}$ 거리입니다. x_3 Y + x_4 Z$ 및 실제 벡터(y,y,y)는 σ = yI + yσX + yY + yZ로 정의됩니다. 여기서 σ는 레지스터의 상태에 해당하는 밀도 행렬입니다. 이는 Tr(σ) 및 Tr(|ψ⟩⟨ψ|)이 모두 1(예: x = 1/2, y = 1/2)이라는 가정 하에만 해당됩니다. 그렇지 않은 경우 함수는 l∞ 간격(x 5-x,x-x,x-x,x+x)과 (y y y,y-y,y-y,y-y,y+y) 사이의 거리가 허용 오차 매개 변수보다 작다는 것을 어설션합니다.

이 작업의 Adjoint 및 제어된 버전은 조건을 검사 않습니다.