【发布时间】: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 函数的定义如此之大,如果他不能确定正确的关系,那么她会返回评估结果。
-
哦,我明白了,谢谢!