Я новичок в Python. Буду признателен за любую помощь, которую вы можете оказать. Я пытаюсь решить проблему с собственными значениями. У меня есть матрица, которую я называю «данные3» с элементами в терминах неизвестной переменной «омега». Определитель матрицы даст мне характеристический полином в терминах «омега», по которому я могу определить корни или собственные значения, которые мне нужны.
Вот мой код:
import sympy as sp
import numpy as np
import scipy as sc
omega=sp.Symbol('omega');
data1=sp.Matrix(sc.genfromtxt('./Z_real.csv',dtype=float,delimiter=','));
data2=sp.Matrix(sc.genfromtxt('./Z_imag.csv',dtype=float,delimiter=','));
data2a=data2*1j*omega;
data3=sp.Matrix(data1+data2a);
eqn=sp.Eq(sp.det(data3),0);
print(sp.solve(eqn));
Как видно выше, я импортирую data1 и data2, которые затем объединяю, чтобы сформировать матрицу комплексных чисел (с «омегой», которую мне нужно решить). Например, моя матрица data3 при выводе на консоль iPython выглядит так:
Matrix([
[ 0.536, -1.119e-8*I*omega, -1.3558e-8*I*omega, -3.8778e-9*I*omega],
[ -1.119e-8*I*omega, 0.536, -3.8778e-9*I*omega, -1.3558e-8*I*omega],
[-1.3558e-8*I*omega, -3.8778e-9*I*omega, 0.536, -1.119e-8*I*omega],
[-3.8778e-9*I*omega, -1.3558e-8*I*omega, -1.119e-8*I*omega, 0.536]])
Однако строка кода sp.solve (eqn) возвращает мне пустой список. Я ожидаю увидеть корни матричного полинома (от определителя). Может кто-нибудь посоветовать мне, что я делаю не так? Также было бы здорово, если бы кто-нибудь мог показать мне альтернативные способы решения проблемы «омега». Если вам нужна информация о data1 и data2, ниже приведены матрицы, которые я использую для своего теста:
data1
Matrix([
[0.536, 0.0, 0.0, 0.0],
[ 0.0, 0.536, 0.0, 0.0],
[ 0.0, 0.0, 0.536, 0.0],
[ 0.0, 0.0, 0.0, 0.536]])
и data2
Matrix([
[ 0.0, -1.119e-8, -1.3558e-8, -3.8778e-9],
[ -1.119e-8, 0.0, -3.8778e-9, -1.3558e-8],
[-1.3558e-8, -3.8778e-9, 0.0, -1.119e-8],
[-3.8778e-9, -1.3558e-8, -1.119e-8, 0.0]])
Большое спасибо за уделенное время.