SymPy: замена символа внутри матрицы

#python #matrix #sympy #symbols

#python #матрица #sympy #символы

Вопрос:

У меня есть матрица, которая содержит символы:

 
t = sympy.symbols("t")
A = sympy.Matrix([[np.exp(t),1,-1)], [0,t,0], [0,t 1,0]])

 

Я хочу заменить все символы «t» числом.

Заранее благодарю вас.

Ответ №1:

 A = sympy.Matrix([[sympy.exp(t),1,-1], [0,t,0], [0,t 1,0]]) # fixing your expression
print(A.subs(t, 5))
 

Что дает

 Matrix([
[exp(5), 1, -1],
[     0, 5,  0],
[     0, 6,  0]])
 

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

1. Хм, ваш aswer работает для этого простого примера, спасибо. Однако мой реальный код немного запутанный и более сложный, и, возможно, мне придется задать еще один вопрос. У меня есть матрица A в степени k. MatPow(A, k), и когда я добавляю k с числом, мощность остается за пределами матрицы. Затем, когда я пытаюсь умножить эту матрицу, конечный результат не оценивается, результаты остаются как (MatA ^ 5) * matB. Но спасибо за ваше время 🙂

2. @Emolai Если бы вы хотели вычислить выражение, вы бы сделали A.subs(t, 5).evalf() , или более компактно A.evalf(subs={t: 5}) . Удивительно, но по какой-то причине это все равно не будет оценивать MatPow объект, и я не могу понять, почему. Определенно стоит другого вопроса.

3. @Emolai О, попробуй sympy.MatPow(A, k).subs({t: 5, k: 2}).doit() !

4. Вы ответили на 2 вопроса в 1: P