Определение векторного подпространства Sage путем изменения основы другого подпространства дает неожиданные результаты.Python

Программы на Python
Anonymous
Определение векторного подпространства Sage путем изменения основы другого подпространства дает неожиданные результаты.

Сообщение Anonymous »

Я пытаюсь написать код, чтобы определить, инвариантны ли определенные векторные подпространства под действием определенных матриц. В частности, для этого необходимо определить подпространства, воздействовать на эти подпространства с помощью матрицы и проверить, равно ли новое подпространство старому подпространству. К сожалению, похоже, что это ведет себя не так, как я ожидал.
Рассмотрим следующий код Sage, который определяет двумерное векторное пространство над конечным полем GF(2) и парой подпространств:

Код: Выделить всё

F = GF(2)
V = VectorSpace(F,2)
u = matrix(F, [[1, 1], [0, 1]])
v1 = vector(F, [0,1])
V1 = V.subspace([v1])
uV1 = V.subspace([u*v for v in V1.basis()])
print(uV1.basis(), uV1 == V1)
Я ожидаю, что это напечатает [(1,1)] False, потому что uV1 должно быть векторным подпространством с базисом [(1,1)]. Действительно, когда я заменяю последнюю строку приведенного выше кода на print([u*v for v in V1.basis()]), Sage печатает [(1,1)].
Однако, когда я выполняю код, как написано выше, Sage вместо этого печатает [(0,1)] True.
Что здесь происходит? Почему подпространство uV1 определяется неправильно, и как я могу изменить код, чтобы это исправить?
(Если это актуально, когда я вручную определяю uV1 = V.subspace([(1,1)]), то все работает так, как ожидалось; в частности, uV1.basis() — это [(1,1)], а uV1 == V1 — это Ложь.)

Подробнее здесь: https://stackoverflow.com/questions/798 ... pace-gives

Вернуться в «Python»