ApplyFunctionWithLookupTable işlevi

Uyarı

Bu belge, Modern QDK ile değiştirilen Klasik QDK'yi ifade eder.

Lütfen Modern QDK için API belgelerine bakın https://aka.ms/qdk.api .

Ad Alanı: Microsoft.Quantum.Arithmetic

Paket: Microsoft.Quantum.Numerics

Bu işlev, yaklaşık olarak bulmak istediğiniz işlev için bir arama tablosu işleci ve işleç için giriş olarak kullanılması gereken iki FixedPoint kaydı yapmak için gereken parametreleri oluşturur.

function ApplyFunctionWithLookupTable (func : (Double -> Double), domain : (Double, Double), epsIn : Double, epsOut : Double) : Microsoft.Quantum.Arithmetic.FunctionWithLookupTable

Giriş

func : Çift ->Çift

Arama tablosuyla uygulamak istediğiniz Q# aritmetik işlevi

etki alanı : (Çift,Çift)

İşleve giriş değerlerinin en düşük ve en yüksek değerlerinden oluşan bir tanımlama grubu

epsIn : Çift

Hesaplamaya giriş değerinin izin verilen en büyük hatası (örneğin, |x'-x|)

epsOut : Double

Giriş değerindeki hata dikkate alınmadan çıktının izin verilen en büyük hatası (örneğin, |f'(x')-f(x')|)

Çıkış : FunctionWithLookupTable

Örnek

Aşağıdaki kod, giriş hatası ve çıkış hatası ile arasında -5.05.0 (dahil) aralığına dayalı ExpD bir kuantum işlemi oluşturur.1e-31e-4

// Create operation from lookup table
let domain = (-5.0, 5.0);
let epsIn = 1e-3;
let epsOut = 1e-4;

let lookup = ApplyFunctionWithLookupTable(ExpD, domain, epsIn, epsOut);

// Allocate qubits
use input = Qubit[lookup::IntegerBitsIn + lookup::FractionalBitsIn];
use output = Qubit[lookup::IntegerBitsOut + lookup::FractionalBitsOut];

// Represent qubit registers as fixed points
let inputFxP = FixedPoint(lookup::IntegerBitsIn, input);
let outputFxP = FixedPoint(lookup::IntegerBitsOut, output);

// Apply operation
lookup::Apply(inputFxP, outputFxP);

Açıklamalar

işleci, $x$ giriş değeri ve $f(x)$ işlevi verildiğinde $\hat{f}(\hat{x})$ işlemini hesaplar; burada $\hat{f}$ en fazla epsOut hatasıyla $f$ yaklaşık değeri ve $\hat{x}$ ise en yüksek hatayla $\hat{x}$ giriş değerinin epsInyaklaşık değeridir. Bu, en makul şekilde davranan işlevler için yararlıdır, ancak $\hat{f}(\hat{x})$ hesaplayıp $\hat{f}(x)$ hesaplamadığını unutmayın; bu nedenle etki alanı işlevi çok salınımlıysa ve/veya funky türevleri varsa yüksek hatalara sahip olabilir.