gpt4 book ai didi

python - sympy如何将ln((exp(x)+1)/exp(x))简化为log(1+exp(-x))?

转载 作者:行者123 更新时间:2023-11-28 20:39:15 28 4
gpt4 key购买 nike

如果我在 sympy 中使用 simplify() 函数,log((exp(x)+1)/exp(x)) 会简化为 log (1+exp(-x)),但是,当我阅读文档时,简化函数“可能会不必要地慢”,我尝试了其他简化方法,但没有一个有效,所以我想知道我如何将 ln((exp(x)+1)/exp(x)) 简化为这样的形式 log(1+exp(-x)) 而不是调用 simplify()。

最佳答案

您要使用的确切函数取决于您正在处理的表达式的一般形式。 cancel 显然有效,但也许只是偶然。一般而言,cancel 取消分子和分母的公因子,例如 cancel((x**2 - 1)/(x - 1)) -> x + 1。我认为它只在这里起作用,因为它代表 exp(-x) 方面的表达式。如果它改为使用 exp(x),它不会简化,因为 (x + 1)/x 没有任何公因数。这可能就是您在不同版本中看到 cancel 的不同结果的原因。参见 this issue获取更多信息。

对于这个表达式,我会使用 expand()(或更有针对性的 expand_mul)。 expand 会将分母分布在分子上,即 (exp(x) + 1)/exp(x) 将变为 exp(x)/exp( x) + 1/exp(x)。 SymPy 然后自动将 exp(x)/exp(x) 取消为 1 并将 1/exp(x) 转换为 exp( -x) (它们在内部都以相同的方式表示)。

In [1]: log((exp(x)+1)/exp(x)).expand()
Out[1]:
⎛ -x⎞
log⎝1 + ℯ ⎠

tutorial 中有一些简化函数的指南。 .

关于python - sympy如何将ln((exp(x)+1)/exp(x))简化为log(1+exp(-x))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com