Я новичок в использовании python и Sympy... И у меня возникла проблема с решением многомерных неравенств с использованием sympy.
Допустим, у меня есть много функций в файле, который выглядит так:
cst**(sqrt(x)/2)/cst
exp(sqrt(cst*x**(1/4)))
log(log(sqrt(cst + exp(x))))
(y**(1/4) + y)**cst
sqrt(y/log(x))/cst
sqrt(cst**log(cst) + x)
(y**2)**(x/4)
sqrt(y*sqrt(cst**y))
log(sqrt(2)*sqrt(cst)*x)
Мне нужно вывести их, установить значение константы и проверить, если для каждой функции f
df/dx > 0
df/dy < 0
С х в [0, +оо) и у в [0, 1].
Для получения я использую:
dx = diff(f, x)
dy = diff(f, y)
Затем, когда я пытаюсь:
cst = 2 #(for example)
solve(dx > 0)
Я получил эту ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/solvers.py", line 634, in solve
symbols=symbols)
File "/usr/local/lib/python2.7/dist-packages/sympy/solvers/inequalities.py", line 374, in reduce_inequalities
raise NotImplementedError("only univariate inequalities are supported")
NotImplementedError: only univariate inequalities are supported
Но если я попробую это:
x=Symbol('x', real=True, postive=True, nonzero=True)
y=Symbol('y', real=True, postive=True, nonzero=True)
solve(x**2+y > 0)
Я получил :
True
Это хороший и рабочий ответ. Можно ли как-то решить многомерное неравенство и всегда получить работоспособный ответ?
Например, я хотел бы получить: решить (x ** 2-y> 0) или (x> -sqrt (y), x> sqrt (y))