Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简化同理根_Python_Math_Sympy_Symbolic Math - Fatal编程技术网

Python 简化同理根

Python 简化同理根,python,math,sympy,symbolic-math,Python,Math,Sympy,Symbolic Math,我有下面的代码 from sympy import * x,y,G=symbols('x y G') G=x**(3./2.) - y g_inv=solve(G, x) if len(g_inv)>1: g_inv=g_inv[-1] dginvdy=diff(g_inv, y) 问题是这让我 ____ 3 ╱ 2 2⋅╲╱ y ───────── 3⋅y 而且不像我预期的那样,2*y**(-1./3)/3。我试过simplify()甚至cancel()

我有下面的代码

from sympy import *
x,y,G=symbols('x y G')
G=x**(3./2.) - y
g_inv=solve(G, x)
if len(g_inv)>1: g_inv=g_inv[-1]
dginvdy=diff(g_inv, y)
问题是这让我

     ____
  3 ╱  2 
2⋅╲╱  y  
─────────
   3⋅y
而且不像我预期的那样,
2*y**(-1./3)/3
。我试过
simplify()
甚至
cancel()
,但是运气不好。此外,如果我用
real=True
定义变量,出于某种原因,我无法用
solve
将其反转。如果我只将
y
定义为真实,我会得到

2⋅sign(y)
─────────
  3 _____
3⋅╲╱ │y│ 
更接近(?)但仍然不是我想要的。将
y
定义为正也没用

这可能看起来很愚蠢,但从那时起,我所做的计算就变得非常复杂


有什么想法吗?

我想你需要在这里使用
sympy.factor
,而不是
simplify

In [2]: dginvdy
Out[2]: 2*(y**2)**(1/3)/(3*y)
In [3]: factor(dginvdy)
Out[3]: 2/(3*y**(1/3))

我想您需要在这里使用
sympy.factor
,而不是
simplify

In [2]: dginvdy
Out[2]: 2*(y**2)**(1/3)/(3*y)
In [3]: factor(dginvdy)
Out[3]: 2/(3*y**(1/3))

我发现,通过使用假设定义变量,我的根简化问题通常会得到缓解。
positive=True
,事实上,这种方法也能让你得到你想要的答案。您需要去掉if语句并使用
g\u inv=solve(g,x)[0]
,因为
solve(…)
现在只返回一个解决方案。这种方法可能会导致一些通用性的损失,因此您只需要了解您的问题。

我发现,通过使用假设定义变量,我的根简化问题通常会得到缓解,而且这种方法确实也可以让您在这里得到所需的答案。您需要去掉if语句并使用
g\u inv=solve(g,x)[0]
,因为
solve(…)
现在只返回一个解决方案。这种方法可能会导致一些通用性的损失,所以您只需要了解您的问题