Python 平方根辛化简
我有一个表达式,我认为可以简化一些,出于某种原因,sympy没有执行我认为是简单简化的操作。我的示例代码如下所示:Python 平方根辛化简,python,sympy,simplify,Python,Sympy,Simplify,我有一个表达式,我认为可以简化一些,出于某种原因,sympy没有执行我认为是简单简化的操作。我的示例代码如下所示: # coding: utf-8 # In[1]: from __future__ import division from sympy import * init_printing() # In[3]: d, R, c = symbols('d R c', Positive = True, Real = True) Δt = symbols('\Delta_t', Real
# coding: utf-8
# In[1]:
from __future__ import division
from sympy import *
init_printing()
# In[3]:
d, R, c = symbols('d R c', Positive = True, Real = True)
Δt = symbols('\Delta_t', Real = True)
# In[4]:
Δt = (1/c**2)*(-R*c+sqrt(c**2*(R+d)**2))
Δt
# In[5]:
simplify(Δt)
我把代码放在上面的剪切和粘贴的乐趣。。。iPython的图形输出如下所示:
# coding: utf-8
# In[1]:
from __future__ import division
from sympy import *
init_printing()
# In[3]:
d, R, c = symbols('d R c', Positive = True, Real = True)
Δt = symbols('\Delta_t', Real = True)
# In[4]:
Δt = (1/c**2)*(-R*c+sqrt(c**2*(R+d)**2))
Δt
# In[5]:
simplify(Δt)
我预计最终结果如下:
我认为基于我如何定义变量,简化会发生,至少是sqrt((R+d)**2)。。。我做错了什么?试试
real=True
和positive=True
(小写):
输出:
d/c
为了扩展@user5402的答案,SymPy只进行默认情况下对一般复数有效的简化。特别是,
sqrt(x**2)=x
通常不正确。如果x
为正,则为真。将x
设置为Symbol('x',positive=True)
告诉Symphy情况就是这样 我在创建变量时指定了(正=真,实=真)。至少我认为这就是我在添加这些选项时所做的…你知道为什么在使用parse_expr时同样的事情不起作用吗?执行x=symbols('x',positive=True,real=True)和expr=simplify(parse_expr(“sqrt(x2)”)操作会返回“sqrt(x2)”而不是“x”。parse_expr
创建新符号。如果希望它重用以前定义的x
,则需要使用parse_expr('sqrt(x**2),locals())
。