我在Sage中遇到了一些错误的问题(我找不到解决方法)
这是一个代码
nb = 8
varl = [ c + str( p ) for c in 'xyz' for p in range(nb)]
B = BooleanPolynomialRing ( names = varl )
B.inject_variables ()
P.<p> = PolynomialRing ( B )
Byte.<t> = P.quotient_ring ( p^8 + p^4 + p^3 + p + 1)
X = B.gens()[: nb ]
Y = B.gens()[ nb :2*nb ]
x = sum ([ X [ j ]*t^j for j in range(nb)])
y = sum ([ Y [ j ]*t^j for j in range(nb)])
E3 = x*y
ep3 = E3.list()
latex(ep3)
和输出
Defining x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, y6, y7, z0, z1, z2, z3, z4, z5, z6, z7
Error in lines 12-12
Traceback (most recent call last):
File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1188, in execute
flags=compile_flags) in namespace, locals
File "", line 1, in <module>
File "sage/structure/element.pyx", line 489, in sage.structure.element.Element.__getattr__ (build/cythonized/sage/structure/element.c:4611)
return self.getattr_from_category(name)
File "sage/structure/element.pyx", line 502, in sage.structure.element.Element.getattr_from_category (build/cythonized/sage/structure/element.c:4720)
return getattr_from_other_class(self, cls, name)
File "sage/cpython/getattr.pyx", line 389, in sage.cpython.getattr.getattr_from_other_class (build/cythonized/sage/cpython/getattr.c:2540)
raise AttributeError(dummy_error_message)
AttributeError: 'QuotientRing_generic_with_category.element_class' object has no attribute 'list'
我不明白,为什么它不起作用。我试图在cocalc.com和桌面版的Sage中制作它,但它没有用。
不幸的是,E3.list()
不起作用。当引用的论文出来时,也许它曾在Sage 6.7中使用过,但现在还没有。以下应该有效:保留你所拥有的一切,包括E3 = x*y
。在这一点上,E3
是
x7*y7*t^14 + (x6*y7 + x7*y6)*t^13 + (x5*y7 + x6*y6 + x7*y5)*t^12 + (x4*y7 + x5*y6 + x6*y5 + x7*y4)*t^11 + (x3*y7 + x4*y6 + x5*y5 + x6*y4 + x7*y3)*t^10 + (x2*y7 + x3*y6 + x4*y5 + x5*y4 + x6*y3 + x7*y2)*t^9 + (x1*y7 + x2*y6 + x3*y5 + x4*y4 + x5*y3 + x6*y2 + x7*y1)*t^8 + (x0*y7 + x1*y6 + x2*y5 + x3*y4 + x4*y3 + x5*y2 + x6*y1 + x7*y0)*t^7 + (x0*y6 + x1*y5 + x2*y4 + x3*y3 + x4*y2 + x5*y1 + x6*y0)*t^6 + (x0*y5 + x1*y4 + x2*y3 + x3*y2 + x4*y1 + x5*y0)*t^5 + (x0*y4 + x1*y3 + x2*y2 + x3*y1 + x4*y0)*t^4 + (x0*y3 + x1*y2 + x2*y1 + x3*y0)*t^3 + (x0*y2 + x1*y1 + x2*y0)*t^2 + (x0*y1 + x1*y0)*t + x0*y0
那么这样做:
E3L = E3.lift()
[E3L.monomial_coefficient(_) for _ in E3L.monomials()]
这回来了
[x7*y7,
x6*y7 + x7*y6,
x5*y7 + x6*y6 + x7*y5,
x4*y7 + x5*y6 + x6*y5 + x7*y4,
x3*y7 + x4*y6 + x5*y5 + x6*y4 + x7*y3,
x2*y7 + x3*y6 + x4*y5 + x5*y4 + x6*y3 + x7*y2,
x1*y7 + x2*y6 + x3*y5 + x4*y4 + x5*y3 + x6*y2 + x7*y1,
x0*y7 + x1*y6 + x2*y5 + x3*y4 + x4*y3 + x5*y2 + x6*y1 + x7*y0,
x0*y6 + x1*y5 + x2*y4 + x3*y3 + x4*y2 + x5*y1 + x6*y0,
x0*y5 + x1*y4 + x2*y3 + x3*y2 + x4*y1 + x5*y0,
x0*y4 + x1*y3 + x2*y2 + x3*y1 + x4*y0,
x0*y3 + x1*y2 + x2*y1 + x3*y0,
x0*y2 + x1*y1 + x2*y0,
x0*y1 + x1*y0,
x0*y0]
你也可以用latex(...)
应用于整个事情,或者你可以做到
[latex(E3L.monomial_coefficient(_)) for _ in E3L.monomials()]
获取系数的LaTeX表达式列表。
或者:
E3L = E3.lift()
E3L.list()
产生系数列表但按度数递增而不是递减:它返回
[x0*y0,
x0*y1 + x1*y0,
x0*y2 + x1*y1 + x2*y0,
x0*y3 + x1*y2 + x2*y1 + x3*y0,
x0*y4 + x1*y3 + x2*y2 + x3*y1 + x4*y0,
x0*y5 + x1*y4 + x2*y3 + x3*y2 + x4*y1 + x5*y0,
x0*y6 + x1*y5 + x2*y4 + x3*y3 + x4*y2 + x5*y1 + x6*y0,
x0*y7 + x1*y6 + x2*y5 + x3*y4 + x4*y3 + x5*y2 + x6*y1 + x7*y0,
x1*y7 + x2*y6 + x3*y5 + x4*y4 + x5*y3 + x6*y2 + x7*y1,
x2*y7 + x3*y6 + x4*y5 + x5*y4 + x6*y3 + x7*y2,
x3*y7 + x4*y6 + x5*y5 + x6*y4 + x7*y3,
x4*y7 + x5*y6 + x6*y5 + x7*y4,
x5*y7 + x6*y6 + x7*y5,
x6*y7 + x7*y6,
x7*y7]