Выделение переменных в символическом выражении - PullRequest
0 голосов
/ 04 июня 2019

У меня есть функция, которая преобразует символические уравнения Лагранжа в гамильтоновы уравнения.Один из аспектов, с которым у меня возникают проблемы, - это замена члена массы * скорости на член импульса.

У меня есть строка кода, которая возвращает все члены импульса:

momentum = lagrangian.jacobian(velocity)

, которая возвращает символическую матрицу с ячейками массы * пример скорости:

>>> momentum
Matrix([[0, 0, 1.0*m_1*xd2, 1.0*m_1*yd2, 1.0*m_2*td1, 1.0*m_2*td2]])

Когда я пытаюсь заменить импульсное символическое «p» для каждого члена, функция sympy.subs не идентифицирует ни одно из массовых * скоростей.Я считаю, что это из-за константы 1,0 в выражении.Мне было любопытно, есть ли способ выделить символические термины или удалить константу перед символическими терминами.

1 Ответ

0 голосов
/ 05 июня 2019

Когда вы говорите «удалить константу», я предполагаю, что вы имеете в виду, что вы хотите, чтобы 1.0 ушел. Один из способов сделать это - использовать nsimplify в матрице:

>>> m
Matrix([[1.0*m*v**2]])
>>> nsimplify(m, rational=True)
Matrix([[m*v**2]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...