Создание Qobj из переменной picos
Мне нужно написать полуопределенную программу, которая минимизирует след оператора, скажем R, с учетом ограничения, что tr_A(R)^{Tb} >>0 . Это означает, что R представляет квантовую систему с 3 кубитами, а трасса первой системы дает вам оператор, который представляет оставшиеся системы с 2 кубитами. Взяв частичное транспонирование по отношению к одному из кубитов, вы получите частично транспонированное квантовое состояние ограниченной системы 2 кубитов. Именно это состояние я хочу сделать положительным полуопределенным. Я использую PICOS (для записи SDP) и qutip (для выполнения операций).
P = pic.Problem()
Rho = P.add_variable('Rho',(n,n),'hermitian')
P.add_constraint(pic.trace(Rho)==1)
P.add_constraint(Rho>>0)
RhoQOBJ = Qobj(Rho)
RhoABtr = ptrace(RhoQOBJ, [0,1])
RhoABqbj = partial_transpose(RhoABtr, [0], method='dense')
RhoAB = RhoABqbj.full()
Проблема: мне нужно сделать Rho Qobj, чтобы qutip мог его понять, но выше Rho - только экземпляр класса Variable. У кого-нибудь есть идеи, как это сделать?
Также я посмотрел здесь, http://picos.zib.de/tuto.html, это стало еще более запутанным, поскольку эта функция помещает экземпляр в словарь и возвращает только ключ.
2 ответа
Вы должны иметь возможность выводить массив или разреженную матрицу для преобразования в Qobj. Я не смог найти ничего в документации Picos, где обсуждается этот вариант.
Я вижу этот пост очень поздно, но, возможно, я могу помочь... Я не уверен, что делает функция Qobj(), расскажите, пожалуйста, подробнее об этом.
В противном случае, теперь в PICOS есть новая функция part_transpose (), выпущенная сегодня, которая, мы надеемся, сделает то, что вам нужно.
Бест, Гийом.