Как не дать sympy удалить те же значения? - PullRequest
0 голосов
/ 10 марта 2020

Я определил следующее

import sympy as sp
from sympy import Max
x = sp.symbols('x', positive=True)

Теперь я вычисляю максимум нескольких значений Symboli c и non-symboli c:

s = Max(3, 5, 5, 4 * x, 2, 7 * x, 4 * x)

Очевидно, что, поскольку x положительно, то s равно 5 или 7 * x; В качестве ответа я хочу: упростить так, чтобы значения, которые не могут быть максимальными, были удалены (т.е. 3 или 2 или 4 * x), но оставлены двойные значения, которые потенциально могут быть максимальными; Поэтому в этом случае я хочу получить ответ:

s = Max(5, 5, 7 * x)

Python правильно удаляет значения, которые не являются максимальными, но также убивает двойные значения, которые потенциально могут быть максимальными, т. Е. Возвращает

s = Max(5, 7 * x)

Как я могу это изменить?

1 Ответ

0 голосов
/ 10 марта 2020

Идея состоит в том, чтобы выяснить, существует ли более одного большого значения; если это так, сохраните элементы в t, которые имеют эти значения. И «эти значения» будут аргументами экземпляра Max.

Примерно так будет работать:

>>> t = (3,5,5,4*x,2,7*x,4*x)
>>> def allbig(t):
...   big = Max(*t)
...   if isinstance(big, Max): return tuple(i for i in t if i in big.args)
...   return (big,)
...
>>> allbig(t)
(5, 5, 7*x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...