Импортируем все функции из sympy
:
from sympy import *
"Настроим" печать, чтобы при выводе на экран выводились сами символы, а не слова, их означающие:
init_printing()
Создадим символ для $\lambda$ ("lamda") и сохраним его в переменную lam
. Теперь Python будет относиться к нему, как к переменной, как к неизвестной.
lam = symbols('lamda')
Проверим. Создадим матрицу $M$
$$ M = \left(\begin{array}{cc} 3-\lambda & 3\\ 3 & 3-\lambda \end{array}\right)$$M = Matrix([[3 - lam, 3], [3, 3 - lam]]) # lam, не lamda (имя переменной)
M
Посчитаем определитель:
M.det()
Найдем, при каких значениях $\lambda$ определитель равен нулю:
solve(M.det(), lam)
Посмотрим, как выглядит обратная матрица для $M$ ($\lambda$ считается за переменную):
M.inv()
Поподставляем вместо $\lambda$ какие-то значения:
M_inv = M.inv()
M_inv.subs({lam: 6}) # лямбда равна 6
M_inv.subs({lam: 12}) # лямбда равна 12
Создадим матрицу R
$$ R = \left(\begin{array}{cc} a & b\\ c & d \end{array}\right)$$a, b, c, d, lamda = symbols('a, b, c, d, lamda')
R = Matrix([[a, b], [c, d]])
R
Вычтем из главной диагонали $\lambda$:
L = R - lam * eye(2) # eye - единичная матрица
L
Подставим вместо букв определенные значения:
L = L.subs({a: 1, b: 3, c: 4, d: 5})
L
Дальше можем работать с матрицей L как угодно.
solve(L.det())
a1, a2 = symbols('a1, a2') # введем новые символы
L.subs({lam : -1}) * Matrix([a1, a2]) # подставим lam = -1 и домножим на вектор (a1, a2)
solve(L.subs({lam : -1}) * Matrix([a1, a2]), a1, a2) # приравняем к нулю и решим относительно a1 и a2