简体   繁体   English

调用 list() 时 Sage 中的 AttributeError

[英]AttributeError in Sage in calling list()

I had some problem with error in Sage (I just cannot find a way to solve it)我在 Sage 中遇到了一些错误问题(我只是找不到解决它的方法)

Here is a code这是一个代码

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)

and output和输出

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'

I don't understand, why it not working.我不明白,为什么它不起作用。 I tried to make it in cocalc.com and also in desktop version of Sage, but it didn't work.我试图在 cocalc.com 和 Sage 的桌面版本中制作它,但它没有用。

Unfortunately, E3.list() doesn't work.不幸的是, E3.list()不起作用。 Maybe it used to in Sage 6.7 when the cited paper came out, but it doesn't now.也许在 Sage 6.7 中引用的论文发表时曾经是这样,但现在不是了。 The following should work: keep everything you have up to and including E3 = x*y .以下应该有效:保留您所拥有的一切,包括E3 = x*y At this point, E3 is此时, 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

So then do:那么做:

E3L = E3.lift()
[E3L.monomial_coefficient(_) for _ in E3L.monomials()]

This returns这返回

[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]

You could also do latex(...) applied to the whole thing, or you could do你也可以做latex(...)应用于整个事情,或者你可以做

[latex(E3L.monomial_coefficient(_)) for _ in E3L.monomials()]

to get the list of LaTeX expressions for the coefficients.获取系数的 LaTeX 表达式列表。

Alternatively:或者:

E3L = E3.lift()
E3L.list()

produces the list of coefficients but in increasing order of degree rather than decreasing: it returns产生系数列表,但按度数递增而不是递减:它返回

[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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM