Python 两个相似矩阵的指数矩阵

Python 两个相似矩阵的指数矩阵,python,scipy,Python,Scipy,我构造了两个矩阵。一个我计算矩阵指数,但另一个我不能。它们构造相似,具有相同的结构和尺寸。我真的不知道为什么一个能工作,而另一个不能。我把代码放在下面 import numpy as np import math as math from scipy.sparse import csc_matrix from scipy.sparse.linalg import * sigmax = [[0, 1], [1, 0]] sigmay = [[0, -1j], [1j, 0]] sigmaz =

我构造了两个矩阵。一个我计算矩阵指数,但另一个我不能。它们构造相似,具有相同的结构和尺寸。我真的不知道为什么一个能工作,而另一个不能。我把代码放在下面

import numpy as np
import math as math
from scipy.sparse import csc_matrix
from scipy.sparse.linalg import *

sigmax = [[0, 1], [1, 0]]
sigmay = [[0, -1j], [1j, 0]]
sigmaz = [[1, 0], [0, -1]]
sigmaxx = np.kron(sigmax,sigmax)
sigmayy = np.kron(sigmay,sigmay)
sigmazz = np.kron(sigmaz,sigmaz)
sigmaxxyy = np.mat(sigmaxx) + np.mat(sigmayy)
N = 6

Hxxyy = 0
for i in range (0,N-2+1):
    Hxxyy = np.mat(Hxxyy) + np.mat(np.kron(np.kron(np.identity(2**i),2*np.mat(sigmaxxyy)),np.identity(2**(N-i-2)) ))
Hxxyy = np.mat(Hxxyy) + np.mat(np.kron(np.kron(2*np.mat(sigmax),np.identity(2**(N-2))),sigmax))+np.mat(np.kron(np.kron(2*np.mat(sigmay),np.identity(2**(N-2))),sigmay))   
print(expm(Hxxyy))

Hhi = 0
for j in range (0,N-1+1):
    Hhi = np.mat(Hhi) + np.mat(np.kron( np.kron(np.identity(2**j),3*np.mat(sigmaz)),np.identity(2**(N-1-j))) )
print(expm(Hhi))
错误消息是:

Traceback (most recent call last):
  File "new test.py", line 20, in <module>
    print(expm(Hhi))
  File "/Users/sherlock/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py", line 582, in expm
    return _expm(A, use_exact_onenorm='auto')
  File "/Users/sherlock/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py", line 637, in _expm
    X = _fragment_2_1(X, h.A, s)
  File "/Users/sherlock/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py", line 755, in _fragment_2_1
    X[k, k] = exp_diag[k]
ValueError: setting an array element with a sequence.
回溯(最近一次呼叫最后一次):
文件“new test.py”,第20行,在
打印(expm(Hhi))
文件“/Users/sherlock/Library/enthund/Canopy_64bit/User/lib/python2.7/site packages/scipy/sparse/linalg/matfuncs.py”,第582行,expm格式
return _expm(A,使用_exact _onenorm='auto')
文件“/Users/sherlock/Library/enthught/Canopy_64bit/User/lib/python2.7/site packages/scipy/sparse/linalg/matfuncs.py”,第637行,在_expm中
X=_片段_2_1(X,h.A,s)
文件“/Users/sherlock/Library/enthund/Canopy_64bit/User/lib/python2.7/site packages/scipy/sparse/linalg/matfuncs.py”,第755行,在_fragment_2_1中
X[k,k]=exp_diag[k]
ValueError:使用序列设置数组元素。

您的代码在Python3(Python3.4.5)中工作,但在Python2(Python2.7.12)中失败

在这两个版本之间,
scipy/sparse/linalg/matfuncs.py
中有一些变化,清理了所有代码路径,以支持密集矩阵和稀疏矩阵

由于尺寸不是很大,快速修复方法是 替换


您收到了什么错误消息?@VBB我已经添加了错误消息。基本上,问题是我无法计算expm(Hhi)。但是expm(Hxxyy)很好用。谢谢!我下载了Python3,它可以正常工作perferctly@JoeJackJessieJames您应该这样做,因为它对您有效:)
 expm(Hhi)
 expm(np.array(Hhi))