为什么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]
答案 0 :(得分:7)
log( xy )= log( x )+ log( y )并不总是成立。更具体地说,如果 x 和 y 均为负或在复杂域中,则可能会出现问题。您给的Wolfram Alpha链接也指出“假设x和y为正的替代形式。”
要在SymPy中查看此关系,您必须将符号x
和y
标记为正,例如像这样:
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)