Как вы делаете функцию с точки зрения оси Y вместо оси X с Sympy в Python? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь закодировать метод Game Theory, чтобы найти оптимальные смешанные стратегии игры порядка 2x2.

В любом случае, для этого мне нужно определить две функции, одна из которых относится к оси x, а другая - к оси y (да, классические оси необходимы для работы в двухмерномплоскость), так что позже можно получить точки пересечения.

Например,
предположим, у меня есть следующие функции, полученные из игры 2x2:

L (y) = y + 1

L (x) = x-2

где:

   if L(y)> 0, i.e, y+1>0, then x=1 (this is if y>-1 then x=1)
   if L(y)< 0, then x=0  (this is if y<-1 then x=0)
   if L(y)= 0, then x∈[0,1] (this is if y=-1 then x∈[0,1])

и

   if L(x) >0 then  y=1 (this is: if x>2 then y=1)
   if L(x) <0 then  y=0 (this is: if x<2 then y=0)
   if L(x) =0 then  y∈[0,1] (this is: if x=2 then y∈[0,1]

https://imgur.com/a/eXeTVF0

Я искал библиотеку Python, которая могла бы сделать это,и я обнаружил, что с помощью sympy можно создавать кусочные функции, например, то, что я пытаюсь сделать.Я делал что-то вроде этого:

    from sympy import symbols, Piecewise
    x,y = symbols('x,y')

    p = Piecewise((1, x > 2), (0, x <2))
    q = Piecewise((1, y>-1), (0,y<-1))

и затем находил точки пересечения из него.Проблема в том, что Python не заботится об «имени» переменной и обрабатывает их обоих, как если бы они находились на одной оси X.

Также у меня возникают проблемы при построении их одновременно и, конечно же, при нахождении в нем точки пересечения.Это вообще возможно для Python?Что мне делать, или каким-либо другим способом я мог бы подойти к этой проблеме.Привет.

1 Ответ

0 голосов
/ 01 июня 2019

Если вы подразумеваете под «пересечением p и q», что вы хотите знать условия, когда они одинаковы, вы можете «сложить» Tuple (p, q), чтобы показать вам:

>>> piecewise_fold(Tuple(p, q))
Piecewise(
  ((1, 1), (x > 2) & (y > -1)),
  ((1, 0), x > 2),
  ((0, 1), y > -1),
  ((0, 0), True))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...