Qutip: TypeError: объект 'Result' не поддерживает индексирование - PullRequest
0 голосов
/ 01 марта 2020

Я хочу исправить этот код. Все хорошо, но когда я пытаюсь запустить этот код, он показывает какую-то ошибку, так как TypeError: объект Result не поддерживает индексирование, я не знаю, почему эта проблема возникает. Если кто-то может решить, это очень приветствуется. Ответ будет оценен.

import math
import pylab as pl
from qutip import *
%matplotlib inline
# system parameters
n = 3
m = 128
gamma = 1
kappa = 0.5
Y = 0.01
g = 1/np.sqrt(2.0)
omega_M = 1
kappa_M = 0.1
ntraj = 1
# initial state
psi0 = tensor(fock(2,1), fock(n,0), fock(m,0))
# operators
sig_plus = tensor(sigmap(), qeye(n), qeye(m))
a = tensor(qeye(2), destroy(n), qeye(m))
b = tensor(qeye(2), qeye(n), destroy(m))
# collapse operators
c_ops= [np.sqrt(2*kappa)*a, np.sqrt(gamma)*sig_plus.dag(), np.sqrt(kappa_M)*b]
# expectation values
e_ops = [a.dag()*a.dag()*a*a, a.dag()*a*sig_plus*sig_plus.dag(), a.dag()*a,
sig_plus*sig_plus.dag()]
# lists of steady-state values
fieldfield_list = []
atomfield_list = []
tlist = np.linspace(0,20,2000)
gM_list = np.linspace(0,3,200)
# build the correlation plots
for g_M in gM_list:
    H = omega_M*b.dag()*b + Y*(a + a.dag())+ g*((a*sig_plus) + (a.dag()*sig_plus.dag()))
    + g_M*a.dag()*a*(b + b.dag())
    evalues = mcsolve(H, psi0, tlist, c_ops=[], e_ops=[], ntraj=None, args={}, options=None, progress_bar=True, map_func=None, map_kwargs=None, _safe_mode=True)
    fieldfield_list.append(evalues[0][-1]/(evalues[2][-1]**2))
    atomfield_list.append(evalues[1][-1]/(evalues[2][-1]*evalues[3][-1]))
# plot the correlation functions
pl.plot(gM_list, fieldfield_list, 'r', gM_list, atomfield_list, 'b')
pl.xlabel('g_M')
pl.ylabel('intensity correlation values')
pl.legend(('field-field', 'atom-field'))
pl.show()

После запуска кода выше я получаю эту ошибку.

 TypeError                                 Traceback (most recent call last)
 <ipython-input-20-15b5e0ad0f36> in <module>()
 33   evalues =mcsolve(H, psi0, times_list, c_ops=[], e_ops=[], ntraj=None, 
 args={}, options=None, progress_bar=True, map_func=None, map_kwargs=None, _safe_mode=True)
 34 
 ---> 35   fieldfield_list.append(evalues[0][-1]/(evalues[2][-1]**2))
 36   atomfield_list.append(evalues[1][-1]/(evalues[2][-1]*evalues[3][-1]))
 37 # plot the correlation functions

 TypeError: 'Result' object does not support indexing

1 Ответ

0 голосов
/ 01 марта 2020
evalues = mcsolve(H, psi0, times_list, ntraj, collapse, evalue_list) 

Это фактический синтаксис.,

** mcsolve(H, psi0, tlist, c_ops=[], e_ops=[], ntraj=None, args={}, options=None, progress_bar=True, map_func=None, map_kwargs=None, _safe_mode=True)**

, поэтому вы передали ntraj в качестве четвертого параметра, но на самом деле это шестой параметр,

ntraj это просто целое число , поэтому выдается ошибка

, поэтому передайте значение аргумента функции mcsolve в соответствии с параметром функции

...