Я очень новый пользователь Python.Я буду признателен за любую помощь, которую вы можете предоставить.Я пытаюсь решить проблему собственных значений.У меня есть матрица, которую я называю «data3» с элементами в терминах неизвестной переменной «omega».Определитель матрицы даст мне характеристический многочлен в терминах «омега», из которого я могу определить нужные мне корни или собственные значения.
Ниже приведен мой код:
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, которые затем объединяю, чтобы сформировать матрицу комплексных чисел (с «omega», который мне нужно решить).Например, моя матрица 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) возвращает для меня пустой список.То, что я ожидаю увидеть, это корни матричного полинома (из детерминанта).Может кто-нибудь посоветовать, пожалуйста, что я делаю не так?Также, если кто-нибудь покажет мне альтернативные способы решения проблемы омега, это тоже будет здорово.Если вам нужна информация о данных1 и данных2, ниже приведены матрицы, которые я использую для своего теста:
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]])
Большое спасибоза ваше время.