Создание 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 (), выпущенная сегодня, которая, мы надеемся, сделает то, что вам нужно.

Бест, Гийом.

Другие вопросы по тегам