У меня есть следующее выражение:Подставляя выражение с SymPy
p/l
, которые я извлечь из матрицы. Позже я определить р и л с следующим кодом
from sympy.abc import c,G,M,J,l,u,v,w
us = (2*G*M/c**2)
a = (J/(M*c))
p = (u**2 + a**2*cos(v))
l = (u**2 - us*u + a**2)
Я хочу подставить выражение p/l
и описать его, а не со всеми из перечисленных выше выражений. Я попытался сделать следующее. Если г является объектом sympy.Matrix и первый элемент определяется как p/l
, то
g[0,0].subs([(p,u**2 + a**2*cos(v)),(l,u**2 - us*u + a**2)])
должен сделать трюк, но вместо этого я все еще получаю p/l
, выражение остается неизменной. Если я просто введите p/l
в IPython сессии я получить выход
(J**2*cos(v)/(M**2*c**2) + u**2)/(-2*G*M*u/c**2 + J**2/(M**2*c**2) + u**2)
Что я и желаю. (Ну, почти, я бы предпочел сначала применить на нем упрощение: (J**2*cos(v) + M**2*c**2*u**2)/(-2*G*M**3*u + J**2 + M**2*c**2*u**2)
).
Благодарности. Я просто хотел прокомментировать, что, поскольку выражения, перечисленные выше, являются взаимозависимыми, я должен был убедиться, что я заменил в правильном порядке: 'us, p, a, l = symbols ('us, p, a, l'); g = g.subs ({p: u ** 2 + a ** 2 * cos (v)}); g = g.subs ({l: u ** 2 - us * u + a ** 2}); g = g.subs ({us: 2 * G * M/c ** 2}); g = g.subs ({a: J/(M * c)}); g = упростить (g) ' – imranal