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.0
5.0
(dahil) aralığına dayalı ExpD
bir kuantum işlemi oluşturur.1e-3
1e-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 epsIn
yaklaşı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.