调用列表中的Sage中的AttributeError()

问题描述 投票:2回答:1

我在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中制作它,但它没有用。

python python-2.7 attributeerror sage
1个回答
1
投票

不幸的是,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]
© www.soinside.com 2019 - 2024. All rights reserved.