Как создать в Sage систему уравнений, используя элементы из логического поля - PullRequest
1 голос
/ 30 мая 2019

Я хочу создать поле на 8 элементов, а затем, используя эти элементы, составить систему уравнений, такую ​​как:

nb = 8
varl = [c+ str(p) for c in 'xy' for p in range (nb)]
B = BooleanPolynomialRing(names = varl)

f1 = x1 + x7*x2

f2 = x4*x6*x8 + x7

а потом ....

Но в этом случае Sage выдает ошибку NameError: имя 'x1' не определено

И в этом случае:

f1 = x[3] + x[1]*x[2]
f2 = x[4]*x[6]*x[2] + x[7]

ошибка: TypeError: объект 'sage.symbolic.expression.Expression' не поддерживает индексирование

1 Ответ

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

Как только B определено как в вопросе, его переменные имеют «отображаемое имя» но без «имени вызова», т.е. они отображаются как x0, x2, ..., x7 и y1, y2, ..., y7, но мы не сказали мудрецу, что также хотел бы иметь возможность вызывать их, набрав x0, x2, ..., x7 и y1, y2, ..., y7.

Один из способов сделать это возможным - запустить:

sage: B.inject_variables()

, после чего мы можем без ошибок выполнить следующее:

sage: f1 = x1 + x7*x2

Остерегайтесь f2, хотя: код в вопросе определяет x0 до x7, но не x8.

...