表达式操作 (文档字符串)¶
- sympy.physics.mechanics.msubs(expr, *sub_dicts, smart=False, **kwargs)[源代码][源代码]¶
用于物理力学中导出的表达式的自定义替代。
遍历表达式树一次,执行在 sub_dicts 中找到的替换。
Derivative
表达式中的项将被忽略:示例
>>> from sympy.physics.mechanics import dynamicsymbols, msubs >>> x = dynamicsymbols('x') >>> msubs(x.diff() + x, {x: 1}) Derivative(x(t), t) + 1
注意,sub_dicts 可以是一个字典,也可以是多个字典:
>>> 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,则尝试简化整个分数。通过这种选择性简化,只有导致 1/0 的子表达式被针对,从而提高了性能。
- sympy.physics.mechanics.find_dynamicsymbols(
- expression,
- exclude=None,
- reference_frame=None,
在表达式中找到所有动态符号。
- 参数:
- 表达式SymPy 表达式
- 排除dynamicsymbols 的可迭代对象,可选
- 参考框架ReferenceFrame, 可选
用于确定给定向量的动态符号的参考框架。
示例
>>> 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)}