Qutip'te bir operatörün boyutunu tanımlama
Benim ana sorum: Birisi bana qutip'teki boyutu tanımlamak için dizi listesinin nasıl kullanıldığını açıklayabilir mi?
Bağlam:
A = Qobj(np.arange(1,65).reshape(8,8))
3 kübitlik yoğunluk operatörüm varsa , kübit 1 ile kübit 2 ve 3 arasında iki parçalı dolanma yapmak isteyecek şekilde kısmi devriği nasıl alabilirim?
Sanırım maskemi ikinci alt sistem üzerinden kısmi transpozisyon alan olarak tanımlamalı X.dims = [[2,4],[2,4]]
ve qt.partial_transpose(X, [1,0])
almalıyım. Ama bunun X.dims = [[2,4],[2,4]]
kutipte anlamı ne ?
Bu doğruysa, boyutumu kübit 1 ve 3 ile kübit 2 arasındaki dolaşıklık için nasıl tanımlarım?
Yanıtlar
Gönderen Resmi belgelerin :
Q.dims
: Çok parçalı bir sistemin ayrı bileşenleri için şekillerin kaydını tutmayı listeleyin (tensör ürünleri ve kısmi izler için).
Başka bir deyişle, onu, alttaki uzayın tensör yapısını hesaba katarak, söz konusu nesnenin (matris temsili) boyutları olarak düşünebilirsiniz. İlk öğe size satırların sayısını söylerken, ikinci öğe size sütunların sayısını söyler.
Örnek olarak düşünün
fooQ = qutip.tensor(qutip.basis(2, 0), qutip.basis(2, 1))
Bu, iki kübit ket halinin tensör çarpımıdır, dolayısıyla boyut uzayında bir vektördür. $2\times 2$. Bir matris olarak, bunu bir$4\times 1$matris. Ancak bu alanın tensör yapısını hatırlamak istiyorsanız, bu da kısmi izleme gibi şeyleri yapmayı kolaylaştırır, her bir boyutu saklamak daha iyidir. Sonra sen bitersin fooQ.dims == [[2, 2], [1, 1]]
, çünkü var$2\times 2$ satırlar ve $1=1\times 1$ sütun.
Örnekte, [[2, 4], [2, 4]]
bir boşluk içine yoğunluklu matrisini temsil eder$\mathcal H_1\otimes\mathcal H_2$ ile $\dim\mathcal H_1=2$ ve $\dim\mathcal H_2=4$.
Örn . Yaparak alanın genel boyutlarını alabilirsiniz.
number_of_rows = np.prod(fooQ.dims[0])
number_of_cols = np.prod(fooQ.dims[1])
Ya da her bir bileşen uzayının boyutlarının bir listesini elde ederek boyutları "çözebilirsiniz".
unravelled_dimensions = np.transpose(fooQ.dims)