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)
我是 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)