使用sympy将方程式转换为另一种形式

问题描述

我有一个问题:我有一个类似x ** 3 - x ** 2 + x - 5 = 0的表达式。我需要将其转换为x = g(x)的形式,例如x = root(x ** 2 - x + 5,3)

sympy可以这样做吗?如果是这样,怎么办?谢谢您的翔实回答。

解决方法

您可以将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