np.linalg.eig Для самосопряжённых чисел получает комплекные собственные значения - почему "ошибка"
Primary tabs
Отклонение, видимо происходит из-за численных методов рассчета:
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().
- Log in to post comments
- 2171 reads