Как бороться с сообщением об ошибке в заданном коде подсказки - PullRequest
0 голосов
/ 15 февраля 2020

Я использую Qutip 4.5 и Ubantu 16.04 и пытаюсь решить этот код. В данном коде я пытаюсь построить корреляционную функцию второго порядка как функцию дельты, которая варьируется от (-10 до 10), но я нахожу некоторые трудности для решения этой проблемы. Я попробовал приведенный ниже код, чтобы приблизиться к моему решению, но получил сообщение об ошибке. Если кто-то может это выяснить, очень приветствуется.

%matplotlib 
import matplotlib.pyplot as plt
import numpy as np
import math
from qutip import *
from IPython.display import Image
pi=np.pi
sqrt=np.sqrt
exp=np.exp
deld1 = 0                   
deld2 = 0                      
wc = 1
wD = 0.00                   
jz = 0.02                    
g1 = 4                
g2 = 1.5                       
 kappa = 1                    
gamma1 = 0.3                
gamma2 = 0.3                 
gammap=0.05                 
N = 2                      
en = 0.5                 
s1=0.5*kappa+0.5*gammap
s2=s1/g1
s=s2*s2
R1=sqrt(4+s)
omega_1 = 1.41
T2=s1/g2
T=T2*T2
R2=sqrt(4+T)
omega_2 = 0.5*kappa* (R2+sqrt(R2*R2+4))
x=0.5*kappa+0.5*gammap
th1 = math.atan(x/(2*wc))
th2 = math.atan(x/(2*wc))
tlist = np.linspace(0,10,100)
delta = 0
a  = tensor(destroy(N), qeye(2),qeye(2))
sm1 = tensor(qeye(N), destroy(2),qeye(2))
sz1=tensor(qeye(N), sigmaz(), qeye(2))
sm2 =tensor(qeye(N), qeye(2), destroy(2))
sz2 = tensor(qeye(N), qeye(2), sigmaz())
H1 = delta * a.dag()*a +deld1*sz1+ deld2*sz2 + g1*(a.dag() * sm1 + a * sm1.dag())+g2* 
(a.dag() * sm2 + a * sm2.dag())
H2 = en*(a.dag() + a) + wD*sm1.dag()*sm2 +wD*sm1*sm2.dag()+ 2*jz*sz1*sz2 
H3 = omega_1 * sm1*exp(complex(0,th1))+ omega_1 * sm1.dag()*exp(complex(0,-th1))
H4 = omega_2 * sm2*exp(complex(0,th2)) + omega_2 * sm2.dag()*exp(complex(0,-th2))
H=H1+H2+H3+H4
c_op_list = [sqrt(1.0)*a,sqrt(0.3)*sm1,sqrt(0.3)*sm2,sqrt(0.05)*sz1,sqrt(0.05)*sz2]
rho0= coherent_dm(4*N,np.sqrt(2))
n= mesolve(H,rho0,tlist,c_op_list,[a.dag()*a]).expect[0]
G2= correlation_3op_1t(H,rho0, tlist, c_op_list,a.dag(), a.dag()*a, a)
g2= G2/(n[0]*n)

После этой строки я получаю это сообщение об ошибке: есть ли ошибка кода или что-то еще, чего я не знаю. Если кто-то может решить это приветствуется.


 TypeError                                 Traceback (most recent call last)
 <ipython-input-10-db0363d2e21c> in <module>
 ----> 1 G2= correlation_3op_1t(H,rho0, tlist, c_op_list,a.dag(), a.dag()*a, a)
  2 g2= G2/(n[0]*n)

/usr/local/lib/python3.5/dist-packages/qutip/correlation.py in correlation_3op_1t(H, state0, 
 taulist, c_ops, a_op, b_op, c_op, solver, args, options)
281 
282     return _correlation_2t(H, state0, [0], taulist, c_ops, a_op, b_op, c_op,
--> 283                            solver=solver, args=args, options=options)[0]
284 
285 

  /usr/local/lib/python3.5/dist-packages/qutip/correlation.py in _correlation_2t(H, state0, 
  tlist, taulist, c_ops, a_op, b_op, c_op, solver, args, options)
  1062         return _correlation_me_2t(H, state0, tlist, taulist,
  1063                                   c_ops, a_op, b_op, c_op,
 -> 1064                                   args=args, options=options)
 1065     elif solver == "mc":
 1066         return _correlation_mc_2t(H, state0, tlist, taulist,

  /usr/local/lib/python3.5/dist-packages/qutip/correlation.py in _correlation_me_2t(H, 
  state0, 
 tlist, taulist, c_ops, a_op, b_op, c_op, args, options)
 1112 
 1113         corr_mat[t_idx, :] = mesolve(
  -> 1114             H_shifted, c_op * rho * a_op, taulist, c_ops_shifted,
 1115             [b_op], args=_args, options=options
  1116         ).expect[0]

  /usr/local/lib/python3.5/dist-packages/qutip/qobj.py in __mul__(self, other)
553 
554             else:
--> 555                 raise TypeError("Incompatible Qobj shapes")
556 
557         elif isinstance(other, np.ndarray):

 TypeError: Incompatible Qobj shapes
...