简体   繁体   English

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

[英]Why does log(xy) = log(x) + log(y) not work in SymPy?

Why does log( xy ) = log( x ) + log( y ) not work in SymPy? 为什么log( xy )= log( x )+ log( y在SymPy中不起作用?

I tried this: 我试过这个:

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]

log( xy ) = log( x )+log( y ) does not always hold. log( xy )= log( x )+ log( y )并不总是成立。 More specifically, this may to problems if both x and y are negative or in the complex domain. 更具体地,如果xy都是负的或者在复域中,这可能是问题。 The Wolfram Alpha link you gave also states “Alternate form assuming x and y are positive”. 您给出的Wolfram Alpha链接还指出“假设x和y为正的替代形式”。

To see this relation in SymPy, you have to mark the symbols x and y as positive, eg like this: 要在SymPy中查看此关系,您必须将符号xy标记为正数,例如:

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

Alternatively (as hinted at by user6655984 ) you can use the force hint to let SymPy assume that everything is maximally benign: 或者(如user6655984所示 ),您可以使用force提示让SymPy假设一切都是最良性的:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM