Как сделать SymPy Max (2, n) равным n? - PullRequest
0 голосов
/ 08 мая 2019

Я практикую SymPy и выясняю, что Max оператор не может решить, когда значение больше 1.

n = Symbol('n', integer=True, positive=True)
Max(1,n)    # this works fine
Max(2,n)    # output Max(2, n)

Я путаюсь, почему Max не может решить его, когдадругое значение больше 1.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вы можете попробовать переписать как Piecewise, чтобы увидеть условия Макса явно:

>>> Max(2,n).rewrite(Piecewise)
Piecewise((2, n <= 2), (n, True))
1 голос
/ 08 мая 2019

Оба результата верны.Если n должно быть положительным целым числом, тогда ответ на Max(1, n) будет n для любого n.Но для Max(2, n) ответ будет n, если n > 1, в противном случае он будет 2.Способ указать, что это Max(2, n), и это то, что SymPy говорит вам.

Снимите ограничение positive на n, и тогда оба ответа появятся в той же форме, что и ввод,потому что теперь Max(1, n) больше не будет n для всех возможных значений n, которые удовлетворяют ограничениям (все целые числа).

...