Intro
У меня есть вопрос относительно наименьшего ненулевого собственного значения матрицы жесткости без наложенных граничных условий и устойчивости численного расчета такого собственного значения.У меня есть последовательность матриц жесткости, где наименьшее ненулевое собственное значение сильно варьируется между каждой матрицей в последовательности, в то время как следующее наименьшее ненулевое собственное значение, похоже, сходится к фиксированному числу.
Мотивация
Мотивация заключается в том, что я хочу вычислить «число условий» матрицы жесткости, но поскольку матрица жесткости является сингулярной без наложенных граничных условий (0 является собственным значением), я хочу вычислить это как отношениемежду самым большим и самым маленьким ненулевым собственным значением.
Моя матрица жесткости является разреженной, и я вычисляю собственные значения, используя scipy.sparse.linalg
с методом инверсии сдвига.
# A is a sparse stiffness matrix
import scipy.sparse.linalg.
min_val, _ = sla.eigsh(A.tocsc(), k = 3, which='LM', sigma=-1e-7, maxiter=1000)
max_val, _ = sla.eigsh(A.tocsc(), k = 1, which='LM', maxiter=1000)
# min_val[0] contains the zero-eigenvalue
# min_val[1] contains the smallest non-zero eigenvalue
# min_val[2] contains the second smallest non-zero eigenvalue
Печатьmin_val
для каждой матрицы дает
[4.17021319e-17 4.94195753e-03 4.94195753e-03]
[3.35565072e-17 4.61482071e-03 4.61482071e-03]
[6.76174490e-18 4.49595561e-03 4.49595561e-03]
[6.55273952e-18 4.23752495e-03 4.44777647e-03]
[1.58654697e-17 3.03181365e-03 4.42722084e-03]
[2.52031212e-17 2.28114607e-03 4.41821852e-03]
, а для первых нескольких матриц наименьшие и вторые наименьшие ненулевые собственные значения аналогичны, но для четвертой матрицы этот тренд прекращается.
Вопрос
В чем причина того, что наименьшее ненулевое собственное значение ведет себя более хаотично, чем второе наименьшее ненулевое собственное значение?Это распространено и что это значит?
Заранее спасибо за помощь!