SymPy выполняет вычисления символически, и вы можете запросить оценку с произвольной точностью.
>>> A
Matrix([
[ 1, 1, 1, 1, 0],
[-1, 1, 1, 1, 1],
[ 0, -1, 1, 1, 1],
[ 0, 0, -1, 1, 1],
[ 0, 0, 0, -1, 1]])
>>> evals = solve(A.charpoly().as_expr())
>>> evals[0].n(30)
1.44482461851856062804340583653
В этом случае полином 5-го порядка находится в форме, которая не распознается подпрограммой eigenvals
, поэтому A. eigenvals () сгенерирует ошибку. Но если ваша матрица не представляет таких трудностей, возможно, можно сгенерировать собственные значения более непосредственно:
>>> A = Matrix([[75, 74], [73, 4]])
>>> _.eigenvals()
{79/2 - 9*sqrt(329)/2: 1, 79/2 + 9*sqrt(329)/2: 1}
>>> list(_.keys())[0]
79/2 - 9*sqrt(329)/2
>>> _.n(30)
-42.1226071624767447920482826638