如何简化包含sqrt(2)/ 2的表达式?

时间:2016-05-22 19:46:58

标签: sympy

此代码:

from sympy import *
x = Symbol('x', positive=True)
vp = Symbol('vp', positive=True)
num = integrate( (vp*sin(x))**2, (x, 0, 2*pi))
den = integrate(      1        , (x, 0, 2*pi))
print " num =",num
print " den =",den
vrms = sqrt(num/den)
print "vrms =",vrms
print "simplified vrms = ",simplify(vrms)

返回:

 num = pi*vp**2
 den = 2*pi
vrms = sqrt(2)*vp/2
simplified vrms =  sqrt(2)*vp/2

如何让它采取最后一步?我希望它能归还:

vrms = vp/sqrt(2)

2 个答案:

答案 0 :(得分:2)

SymPy自动将有理数的理性力量规范化为具有正指数和降低权力的形式。因为这会自动发生,所以任何表达式中出现的每个数字都会发生这种情况,这意味着无法在sqrt(2)/2中生成1/sqrt(2)个结果。

答案 1 :(得分:0)

所以看起来sqrt(2)/ 2 比1 / sqrt(2)更简单。

谢谢你,三明治。

实际上,该示例中的大部分代码都是多余的。我担心如何定义和计算符号可能是相关的。