为什么log(xy)= log(x)+ log(y)在SymPy中不起作用?

时间:2018-07-30 13:44:31

标签: python sympy

为什么log(xy) = log(x) + log(y)在SymPy中不起作用?

我尝试过:

from sympy import *
var('x y')
print(simplify(log(x*y)))
print(expand(log(x*y)))
print(collect(log(x*y),x))
print(solve(log(x*y),x))
# log(x*y)
# log(x*y)
# log(x*y)
# [1/y]

1 个答案:

答案 0 :(得分:7)

log( xy )= log( x )+ log( y )并不总是成立。更具体地说,如果 x y 均为负或在复杂域中,则可能会出现问题。您给的Wolfram Alpha链接也指出“假设x和y为正的替代形式。”

要在SymPy中查看此关系,您必须将符号xy标记为正,例如像这样:

from sympy import symbols,log
x,y = symbols("x,y",positive=True)
expr = log(x*y)
expr.expand()

或者(如user6655984所提示的那样),您可以使用force提示让SymPy假定一切都是最大程度的良性:

from sympy import log
from sympy.abc import x,y
expr = log(x*y)
expr.expand(force=True)