Матрица со сложными экспоненциальными элементами в Python - PullRequest
1 голос
/ 12 июня 2019

Я пытался создать эту гамильтонову матрицу, и я считаю, что сложные экспоненциальные элементы доставляют мне неприятности.Однако я не знаю, как это исправить.

Это то, что я написал до сих пор:

t = 2.7
a = 1

z = -t * np.exp(-j*k*a)

y = -t * np.exp(j*k*a)

H = np.matrix(([0, -t,0,-t,0,0,0,0,0,0,0,0,0,0],
    [- t, 0,- t ,0,0,0,0,0,0,0,0,0,0,0]
    [0, - t ,0,y,0,-t,0,0,0,0,0,0,0,0]
    [-t, 0,z,0,-t,0,0,0,0,0,0,0,0,0]
    [0, 0,0,- t ,0,- t ,0,-t,0,0,0,0,0,0]
    [0, 0,-t,0,0,-t,0,-t,0,0,0,0,0,0]
    [0, 0,0,0,0,- t ,0,y,0,-t,0,0,0,0]
    [0, 0,0,0,-t,0,z,0,- t,0,0,0,0,0]
    [0, 0,0,0,0,0,0,- t,0,- t,0,-t,0,0]
    [0, 0,0,0,0,0,-t,0,- t,0,- t,0,0,0]
    [0, 0,0,0,0,0,0,0,0,- t,0,y,0,-t]
    [0, 0,0,0,0,0,0,0,-t,0,z,0,- t,0]
    [0, 0,0,0,0,0,0,0,0,0,0,- t ,0,- t]
    [0, 0,0,0,0,0,0,0,0,0,-t,0,- t ,0]),dtype = np.complex)`

Когда я пытаюсь запустить ячейку, появляется это сообщение об ошибке

Ошибка типа: индексы списка должны быть целыми числами илисрезы, а не кортежи

Матрица должна быть размером 14x14, чтобы я мог кодировать и получать собственные значения и собственные векторы.

В прошлом я использовал np.array для построения матриц, и он работал нормально.Однако для этого это не так.Как видно, я также пытался использовать np.matrix.

1 Ответ

1 голос
/ 12 июня 2019

Попробуйте использовать

np.array([[val1, val2], [val3, val4]]) 

вместо

np.array(([val1, val2] [val3, val4])) ...

Вы получили ошибку из-за запятых между строками. Не забывайте их, иначе Python думает, что вы пытаетесь выполнить индексацию списка:

т.е.

[1,2,3][0] 
Output: 1

Принимая во внимание,

[1,2,3], [0] 

Выход:

([1,2,3], [0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...