Как создать в Sage систему уравнений, используя элементы из логического поля
Я хочу создать поле на 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' не поддерживает индексирование
0 ответов
Однажды B
определяется как в вопросе, его переменные имеют "отображаемое имя", но не "имя вызова", т.е. они отображаются как x0
, x2
,..., x7
а также y1
, y2
,..., y7
, но мы не сказали Sage, что хотели бы иметь возможность вызывать их, набрав x0
, x2
,..., x7
а также y1
, y2
,..., y7
.
Один из способов сделать это возможным - запустить:
sage: B.inject_variables()
после чего мы можем без ошибок выполнить следующее:
sage: f1 = x1 + x7*x2
Остерегайтесь f2
хотя: код в вопросе определяетx0
к x7
но нет x8
.