Как создать в 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.

Другие вопросы по тегам