Xác định thứ nguyên của toán tử trong qutip
Câu hỏi chính của tôi: Ai đó có thể giải thích cho tôi cách danh sách mảng được sử dụng để xác định thứ nguyên trong qutip không?
Bối cảnh:
Nếu tôi có toán tử mật độ A = Qobj(np.arange(1,65).reshape(8,8))
của mình là 3 qubit, làm cách nào để thực hiện phép chuyển vị từng phần mà tôi muốn tạo ra sự vướng víu lưỡng cực giữa qubit 1 với qubit 2 và 3?
Tôi đoán rằng tôi sẽ phải xác định mặt nạ của mình là gì X.dims = [[2,4],[2,4]]
và lấy qt.partial_transpose(X, [1,0])
nó thực hiện chuyển vị một phần qua hệ thống con thứ hai. Nhưng điều này X.dims = [[2,4],[2,4]]
có nghĩa là gì trong qutip?
Nếu điều này đúng thì tôi sẽ xác định thứ nguyên của mình như thế nào cho sự vướng víu giữa qubit 1 và 3 và qubit 2?
Trả lời
Từ tài liệu chính thức :
Q.dims
: Liệt kê theo dõi các hình dạng cho các thành phần riêng lẻ của một hệ thống đa phân tử (cho các sản phẩm tensor và vết một phần).
Nói cách khác, bạn có thể coi nó như là các kích thước của (biểu diễn ma trận của) đối tượng đang được xem xét, có tính đến cấu trúc căng của không gian bên dưới. Phần tử đầu tiên cho bạn biết về số hàng trong khi phần tử thứ hai cho bạn biết về số cột.
Coi như một ví dụ
fooQ = qutip.tensor(qutip.basis(2, 0), qutip.basis(2, 1))
Đây là tích tensor của hai trạng thái ket qubit, do đó nó là một vectơ trong không gian có thứ nguyên $2\times 2$. Dưới dạng ma trận, bạn có thể biểu diễn nó dưới dạng$4\times 1$ma trận. Nhưng nếu bạn muốn nhớ cấu trúc tensor của không gian này, giúp dễ dàng thực hiện những việc như truy tìm từng phần, tốt hơn nên lưu trữ từng kích thước riêng lẻ. Sau đó, bạn kết thúc với fooQ.dims == [[2, 2], [1, 1]]
, bởi vì có$2\times 2$ hàng và $1=1\times 1$ cột.
Trong ví dụ của bạn, [[2, 4], [2, 4]]
đại diện cho một ma trận mật độ trong một không gian$\mathcal H_1\otimes\mathcal H_2$ với $\dim\mathcal H_1=2$ và $\dim\mathcal H_2=4$.
Bạn có thể truy xuất kích thước tổng thể của không gian bằng cách làm ví dụ:
number_of_rows = np.prod(fooQ.dims[0])
number_of_cols = np.prod(fooQ.dims[1])
Hoặc bạn có thể "làm sáng tỏ" các kích thước, thu được danh sách các kích thước của từng không gian thành phần riêng lẻ, với
unravelled_dimensions = np.transpose(fooQ.dims)