np.linalg.eig Для самосопряжённых чисел получает комплекные собственные значения - почему "ошибка"

Отклонение, видимо происходит из-за численных методов рассчета:

import numpy as np

matrix = [[4. + 0.j,  3. - 3.j], # самосопряжённая матрица
		  [3. + 3.j,  8. + 0.j]];
print(matrix)
a = np.array(matrix)

w, v = np.linalg.eig(a)  # для произвольных
print (w, v)
w, v = np.linalg.eigh(a)   # для эрмитовых
print (w, v)

np.linalg.eigh всегда отбрасывает комплексную часть и по примеру данного кода можно увидеть погрешность в вычислении, причем eigh() работает точнее и быстрее eig().

Key Words for FKN + antitotal forum (CS VSU):