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

mrr*_*48z 2 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]
Run Code Online (Sandbox Code Playgroud)

Wrz*_*mft 7

log(xy)= log(x)+ log(y)并不总是成立.更具体地,如果xy都是负的或者在复域中,这可能是问题.您给出的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()
Run Code Online (Sandbox Code Playgroud)

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

from sympy import log
from sympy.abc import x,y
expr = log(x*y)
expr.expand(force=True)
Run Code Online (Sandbox Code Playgroud)