如何强制评估符号共轭

时间:2019-08-15 18:35:45

标签: python python-3.x sympy symbolic-math

我正在尝试使变量test等于变量test2

test2获得的打印结果只是所需的(1-g1 g1*)

但是test吐出(g1-1)(g1*-1)(x)(x*),其中xsqrt{(1- g1 g1*)/[(g1-1)(g1*-1)]}

从外观上看问题,我知道表达式应该抵消,但是我无法得到test来简化共轭表达式。

  • Sympy版本1.4
  • Python 3.7

尝试过sp.simplify,sp.together

import sympy as sp

def Lambdaj(gammaj):
    step1 = sp.together(1 - sp.conjugate(gammaj)) * sp.sqrt((1 - gammaj * sp.conjugate(gammaj)) / ((1-gammaj) * (1 - sp.conjugate(gammaj))))
    return step1

g1 = sp.symbols('g1')

test = sp.together(Lambdaj(g1) * sp.conjugate(Lambdaj(g1)))
print(test)

test2 = 1 - g1 * sp.conjugate(g1)
print(test2)

print(sp.together((1-g1)*(1-sp.conjugate(g1))))

1 个答案:

答案 0 :(得分:0)

假设g1**2 < 1是否公平?如果是这样,我们可以用仅包含这些值的表达式替换g1,简化结果,然后重新替换原始的g1

>>> p = var('p',nonnegative=True)
>>> u=Eq(g1, p/(1+p)) # p in [0, 1)
>>> test.subs(*u.args).simplify().subs(p,solve(u,p)[0]).simplify()
1 - g1**2