在sympy中实现牛顿点记法(或拉格朗日素数记法)是否可行?

9 投票
1 回答
4155 浏览
提问于 2025-04-18 17:33

莱布尼茨的符号有时候会让人觉得有点乱,尤其是在物理问题中,当时间是唯一需要进行微分的变量时。此外,能不能不显示像 x(t) 这样的函数中的 (t),让 sympy 仍然明白 xt 的函数,并且这样处理它呢?

1 个回答

12

你可以使用这个力学模块,它是基于牛顿物理学设计的。特别是,dynamicssymbols可以给你一个符号,这个符号是隐含依赖于t的。

In [10]: x, y = dynamicsymbols('x y')

In [11]: x
Out[11]: x(t)

默认情况下,这些符号会显示(t),但如果你启用力学打印功能,它们就不会显示了。

In [1]: from sympy.physics.mechanics import dynamicsymbols, init_vprinting

In [2]: init_vprinting
Out[2]: <function sympy.physics.vector.printing.init_vprinting>

In [3]: init_vprinting()

In [4]: x
Out[4]: x

In [5]: t = sympy.Symbol('t')

In [6]: y.diff(t)
Out[6]: ẏ

在你开发的任何交互环境中,比如IPython笔记本,使用init_vprinting代替init_printing(如果你想从脚本中打印东西,还有像mpprint这样的函数)。

如果你想了解更多关于SymPy力学模块的信息,可以阅读文档,还可以看看2014年SciPy大会的教程

撰写回答