Подход к нахождению собственных значений и собственных векторов системы очень больших степеней свободы

#python #math

Вопрос:

Я хочу провести модальный анализ системы больших степеней свободы в python. У меня есть матрицы массы(M) и жесткости(K). Я использовал

 import scipy.linalg as la
evals, evecs = la.eig(K,M)
 

но результаты не совпадают с аналитическими. Я также использовал

 import scipy.sparse.linalg as la
import scipy.sparse as sp`
kk=sp.csr_matrix(K)
mm = sp.csr_matrix(M)
evals, evecs= la.eigsh(A=kk, k=6, M=mm,sigma=0)
frequencies = np.sqrt(evals)/(2*np.pi)
print ("Natural Frequencies : n", frequencies)
 

но это дает только первые несколько собственных частот.
Может ли кто-нибудь, пожалуйста, предложить возможный подход к нахождению собственных значений и собственных векторов системы с очень большими степенями свободы?

Комментарии:

1. Как именно собственные значения, вычисленные из scipy.linalg.eig, не совпадают с аналитическими? Может быть, они были нормализованы?

2. Обычно используются данные или методы домохозяина.