【问题标题】:should Max(n, log(n, 2)) return n if n is a positive integer?如果 n 是正整数,Max(n, log(n, 2)) 是否应该返回 n?
【发布时间】:2019-10-15 16:34:12
【问题描述】:

我已经指定 n 是一个正整数,但是下面的代码没有按预期工作。

>>> n = Symbol('n', integer=True, positive=True)
>>> Max(n, log(n, 2))

将输出:

Max(n, log(n)/log(2))

Max之后添加.rewrite(Piecewise)

>>> Max(n, log(n, 2)).rewrite(Piecewise)
Piecewise((n, n >= log(n)/log(2)), (log(n)/log(2), True))

我认为如果n 是一个正整数,n 应该总是大于log(n, 2)

知道这个结果吗??

有没有办法让Max(n, log(n, 2))返回n??

【问题讨论】:

  • from: docs.sympy.org/0.7.1/modules/functions.html [Max] 一般情况下,当list的长度大于2时,任务比较复杂。如果可以确定方向关系,则仅返回大于其他参数的参数。如果无法确定这样的关系,则返回部分评估的结果。
  • 您好@ZarakiKenpachi,感谢您的回复,但我认为这份文件没有回答我的问题。在这个例子中,Max 只需要两个参数,n 是一个正整数,所以我认为n 应该总是大于log(n)
  • 我知道结果应该是什么,但 Max 函数的定义如此之大,如果他不能确定正确的关系,那么她会返回评估结果。
  • 哦,我明白了,谢谢!

标签: python max big-o sympy


【解决方案1】:

我在 github 上打开了这个问题,好像 sympy Max 函数没有实现这种情况。

https://github.com/sympy/sympy/issues/16926

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2010-12-09
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多