Numpy-задача с большими числами, вычисление собственных значений и определителя ⇐ Python
Numpy-задача с большими числами, вычисление собственных значений и определителя
У меня есть этот код:
импортировать numpy как np из опыта импорта numpy Защиту foo(a,b): return np.array([[exp(-2*b*a), 0,-exp(b*a)/3 + exp(-2*b*a)/3], [0, exp(-2*b*a), 0], [-exp(b*a)/3 + exp(-2*b*a)/3,0, 10*exp(4*b*a)/9 - 2*exp(b*a)/9 + exp (-2*b*a)/9]]) a_s = np.linspace(0, 10, 100) b_s = np.linspace(0,1, 5, 100) store_det = np.zeros((len(a_s), len(b_s))) для i, b в перечислении (b_s): для j, a в enumerate(a_s): store_det[i,j] = np.linalg.det(foo(a,b)) print(f'max: {np.max(store_det)} \t min: {np.min(store_det)}') store_det_by_eigen = np.zeros((len(a_s), len(b_s))) для i, b в перечислении (b_s): для j, a в enumerate(a_s): w,v = np.linalg.eig(foo(a,b)) store_det_by_eigen[i,j] = w[0]*w[1]*w[2] print(f'max: {np.max(store_det_by_eigen)} \t min: {np.min(store_det_by_eigen)}') Определитель этого уравнения должен быть один для каждого действительного значения a и b.
Учитывая, что это дает массив 3x3, я хотел бы вычислить собственные значения и использовать их в расчетах. Произведение собственных значений должно быть равно определителю. Однако для определенных значений a и b произведение больше не равно 1.
Я делаю что-то не так? Как я могу это исправить?
У меня есть этот код:
импортировать numpy как np из опыта импорта numpy Защиту foo(a,b): return np.array([[exp(-2*b*a), 0,-exp(b*a)/3 + exp(-2*b*a)/3], [0, exp(-2*b*a), 0], [-exp(b*a)/3 + exp(-2*b*a)/3,0, 10*exp(4*b*a)/9 - 2*exp(b*a)/9 + exp (-2*b*a)/9]]) a_s = np.linspace(0, 10, 100) b_s = np.linspace(0,1, 5, 100) store_det = np.zeros((len(a_s), len(b_s))) для i, b в перечислении (b_s): для j, a в enumerate(a_s): store_det[i,j] = np.linalg.det(foo(a,b)) print(f'max: {np.max(store_det)} \t min: {np.min(store_det)}') store_det_by_eigen = np.zeros((len(a_s), len(b_s))) для i, b в перечислении (b_s): для j, a в enumerate(a_s): w,v = np.linalg.eig(foo(a,b)) store_det_by_eigen[i,j] = w[0]*w[1]*w[2] print(f'max: {np.max(store_det_by_eigen)} \t min: {np.min(store_det_by_eigen)}') Определитель этого уравнения должен быть один для каждого действительного значения a и b.
Учитывая, что это дает массив 3x3, я хотел бы вычислить собственные значения и использовать их в расчетах. Произведение собственных значений должно быть равно определителю. Однако для определенных значений a и b произведение больше не равно 1.
Я делаю что-то не так? Как я могу это исправить?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Numpy-задача с большими числами, вычисление собственных значений и определителя
Anonymous » » в форуме Python - 0 Ответы
- 75 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Библиотека C ++ для поиска собственных значений и собственных векторов матрицы [закрыто]
Anonymous » » в форуме C++ - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Исключение выхода массива за пределы в рекурсивной программе для вычисления определителя
Anonymous » » в форуме JAVA - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-