Sympy:根据常量重写表达式

Sympy: rewrite an expression in terms of a constant

我是 Sympy 的新手,抱歉如果这个问题有明显的答案。

我想根据之前定义的常量重写一个只包含常量(即没有符号 (?))的表达式。

from IPython.display import display
import sympy
sympy.init_printing()

r = sympy.S.GoldenRatio - 1
display(r)
display(1 - r)
display(1 - r**2) # equals r

显示以下表达式:

但我想:

r
1 - r
r

(不确定我在这里是否真的在问两个不同的问题,一个针对结果的前两行,一个针对最后一行。)

以下内容可以帮助您实现目标。由于括号问题,即使对于未计算的表达式,使用 StrPrinter(dict(order='none')).doprint(expr) 打印表达式也不能很好地工作。

>>> sr= Symbol('(GoldenRatio - 1)')
>>> r= S.GoldenRatio - 1
>>> r.subs(r, sr)
(GoldenRatio - 1)
>>> (1-r).subs(r, sr)
1 - (GoldenRatio - 1)
>>> nsimplify(1-r**2).subs(r, sr)
  1   v5
- - + --
  2   2
>>> nsimplify(1-r**2,r.args).subs(r, sr)
(GoldenRatio - 1)

>>> nsimplify(1-r**2,[S.GoldenRatio]).subs(r, sr)
(GoldenRatio - 1)