Partilhar via


Função StatePreparationComplexCoefficients

Aviso

Esta documentação refere-se ao QDK Clássico, que foi substituído pelo QDK Moderno.

https://aka.ms/qdk.api Veja a documentação da API para o QDK Moderno.

Espaço de nomes: Microsoft.Quantum.Preparation

Pacote: Microsoft.Quantum.Standard

Aviso

StatePreparationComplexCoefficients foi preterido. Em alternativa, utilize a operação PrepareArbitraryStateCP .

Devolve uma operação que prepara um estado quântico específico.

A operação devolvida $U$ prepara um estado quântico arbitrário $\ket{\psi}$ com coeficientes complexos $r_j e^{i t_j}$ do estado de base computacional $n$-qubit $\ket{0...0}$.

A ação de U num registo recentemente alocado é dada por $$ \begin{align} U\ket{0...0}=\ket{\psi}=\frac{\sum_{j=0}^{2^n-1}r_j E^{i t_j}\ket{j}}{\sqrt{\sum_{j=0}^{2^n-1}|r_j|^2}}. \end{align} $$

function StatePreparationComplexCoefficients (coefficients : Microsoft.Quantum.Math.ComplexPolar[]) : (Microsoft.Quantum.Arithmetic.LittleEndian => Unit is Adj + Ctl)

Entrada

coeficientes: ComplexPolar[]

Matriz de até $2^n$ coeficientes complexos representados pelo seu valor absoluto e fase $(r_j, t_j)$. O coeficiente $j$th indexa o estado de número $\ket{j}$ codificado em formato little-endian.

Saída: LittleEndian =>Unit is Adj + Ctl

Uma operação unitária de preparação de estado $U$.

Exemplo

O fragmento seguinte prepara o estado quântico $\ket{\psi}=e^{i 0.1}\sqrt{1/8}\ket{0}+\sqrt{7/8}\ket{2}$ no registo qubitsLEde qubits.

let amplitudes = [Sqrt(0.125), 0.0, Sqrt(0.875), 0.0];
let phases = [0.1, 0.0, 0.0, 0.0];
mutable complexNumbers = new ComplexPolar[4];
for (idx in 0..3) {
    set complexNumbers[idx] = ComplexPolar(amplitudes[idx], phases[idx]);
}
let op = StatePreparationComplexCoefficients(complexNumbers);
using (qubits = Qubit[2]) {
    let qubitsLE = LittleEndian(qubits);
    op(qubitsLE);
}

Observações

Os coeficientes de entrada negativos $r_j < 0$ serão tratados como positivos com o valor $|r_j|$. coefficients será acolchoado com os elementos $(r_j, t_j) = (0,0, 0,0)$ se forem especificados menos de $2^n$.