表达式操作(Docstrings)#

sympy.physics.mechanics.msubs(expr, *sub_dicts, smart=False, **kwargs)[源代码]#

在中派生的表达式上使用的自定义子力学。物理.

遍历表达式树一次,执行sub-dicts中找到的sub。内部条款 Derivative 忽略表达式:

实例

>>> from sympy.physics.mechanics import dynamicsymbols, msubs
>>> x = dynamicsymbols('x')
>>> msubs(x.diff() + x, {x: 1})
Derivative(x(t), t) + 1

请注意,子字典可以是一个字典,也可以是多个字典:

>>> x, y, z = dynamicsymbols('x, y, z')
>>> sub1 = {x: 1, y: 2}
>>> sub2 = {z: 3, x.diff(): 4}
>>> msubs(x.diff() + x + y + z, sub1, sub2)
10

如果smart=True(默认为False),还将检查可能导致 nan ,但如果被简化,则会产生一个有效的表达式。例如:

>>> from sympy import sin, tan
>>> (sin(x)/tan(x)).subs(x, 0)
nan
>>> msubs(sin(x)/tan(x), {x: 0}, smart=True)
1

它首先替换所有 tan 具有 sin/cos . 然后遍历每个节点。如果节点是一个分数,subs首先在分母上求值。如果结果为0,则尝试对整个分数进行简化。使用0/1的选择性表达式可以更快地简化结果。

sympy.physics.mechanics.find_dynamicsymbols(expression, exclude=None, reference_frame=None)[源代码]#

在表达式中查找所有动态符号。

参数:

expression : SymPy expression

排除 :iterable of dynamicsymbols,可选

reference_frame :ReferenceFrame,可选

确定给定向量的动态符号的帧。

解释

If the optional exclude kwarg is used, only dynamicsymbols not in the iterable exclude are returned. If we intend to apply this function on a vector, the optional reference_frame is also used to inform about the corresponding frame with respect to which the dynamic symbols of the given vector is to be determined.

实例

>>> from sympy.physics.mechanics import dynamicsymbols, find_dynamicsymbols
>>> from sympy.physics.mechanics import ReferenceFrame
>>> x, y = dynamicsymbols('x, y')
>>> expr = x + x.diff()*y
>>> find_dynamicsymbols(expr)
{x(t), y(t), Derivative(x(t), t)}
>>> find_dynamicsymbols(expr, exclude=[x, y])
{Derivative(x(t), t)}
>>> a, b, c = dynamicsymbols('a, b, c')
>>> A = ReferenceFrame('A')
>>> v = a * A.x + b * A.y + c * A.z
>>> find_dynamicsymbols(v, reference_frame=A)
{a(t), b(t), c(t)}