0
我寫了一個函數,使用量子模擬類QuTIP返回一個浮點數。接下來,我在函數上調用了scipy.optimize.fmin_cg。我不斷收到錯誤:當我使用Scipy優化時,爲什麼我的'實例'變成'ndarray'?
AttributeError: 'numpy.ndarray' object has no attribute 'expm'
就行了:
U_sq = H_sq.expm
但H_sq是Qobj的一個實例,而不是一個ndarray。如果我在scipy.optimize.fmin_cg之外運行該函數,它將返回類型爲「實例」;當它在fmin_cg中運行時,它將返回類型爲'ndarray'。
它爲什麼這樣做? python中有沒有優化函數會尊重使用像這樣的實例?
下面是代碼:
from qutip import *
from numpy import *
import scipy.optimize
def sq_fidelity(eps,N=7):
H_sq = squeez(N,eps);
print type(H_sq);
one_ph = basis(N,1);
U_sq = H_sq.expm();
squ = U_sq*one_ph;
fidelity = expect(fock_dm(N,1),squ);
return float(fidelity)
if __name__=='__main__':
print sq_fidelity(0.2);
eps = scipy.optimize.fmin_cg(sq_fidelity, x0=0.2, args=(7,));
向我們顯示代碼即可提取標量值。 *你如何*調用'fmin_cg',更重要的是,你在做什麼結果? – kindall