Python 3.x 使用sympy将方程转换为另一种形式
我有这样一个问题:我有一个表达式,像Python 3.x 使用sympy将方程转换为另一种形式,python-3.x,sympy,symbolic-math,Python 3.x,Sympy,Symbolic Math,我有这样一个问题:我有一个表达式,像x**3-x**2+x-5=0。我需要将其转换为x=g(x),例如x=root(x**2-x+5,3) 辛皮能做到吗?如果是,怎么做?感谢您提供了丰富的答案。您可以将x**3术语替换为y**3,并求解y: In [26]: lhs = x ** 3 - x ** 2 + x - 5
x**3-x**2+x-5=0
。我需要将其转换为x=g(x)
,例如x=root(x**2-x+5,3)
辛皮能做到吗?如果是,怎么做?感谢您提供了丰富的答案。您可以将
x**3
术语替换为y**3
,并求解y
:
In [26]: lhs = x ** 3 - x ** 2 + x - 5
In [27]: lhs
Out[27]:
3 2
x - x + x - 5
In [28]: lhs.subs(x**3, y**3)
Out[28]:
2 3
- x + x + y - 5
In [29]: y1, y2, y3 = solve(lhs.subs(x**3, y**3), y)
In [30]: Eq(x, y3)
Out[30]:
____________
3 ╱ 2
x = ╲╱ x - x + 5
由于
sympy
在Python中运行,因此它不能将=
用作代数等式。而是使用Eq
关系。我相信这一点在sympy
简介中已经详细讨论过了。谢谢你,但是你怎么知道你需要3个解决方案呢?这是一个常见的例子,在一个实际问题中可能会有另一个等式,我需要的解并不总是排在第三位。现在,我只是从列表中找到一个具有最小字符串表示长度的解(在我检查的情况下,我需要的解比其他解短得多)您提出的问题没有唯一的解决方案,因此我展示了任意给出您所希望的解决方案的代码。如果您想询问如何“一般”做到这一点,那么您需要更精确地定义问题类别。