在Sage中,试图通过以下方式定义一个矩阵,其中包含单元格的条件:
matrix([[(if gcd(i, j) == 0: log(radical((i+j)*i*j)) else: -1.0) for j in srange(1, 5)] for i in srange(1, 5)])
我得到一个语法错误:
...
matrix([[(if gcd(i, j) == _sage_const_0 : log(radical((i+j)*i*j)) else: -_sage_const_1p0 ) for j in srange(_sage_const_1 , _sage_const_5 )] for i in srange(_sage_const_1 , _sage_const_5 )])
^
SyntaxError: invalid syntax
这里有什么问题?怎么解决?你知道吗
你的问题是Python的问题,真的,不是Sage本身。Python对列表理解有一些过滤,但看起来不是这样的。参见例如this question。你知道吗
所以let's try it:
顺便问一下,你真的想要
if gcd(i,j)==1
?你不可能在这一次得到零的gcd!你知道吗这是另一种可能性。你知道吗
这对矩阵初始化使用了不同的语法,其中 首先指定基环、矩阵大小,然后指定函数 系数的
(i, j)
。注意,由于Sage索引行和 来自0
的列,我们必须将函数应用于i + 1
和j + 1
。你知道吗把
-1
放在非互质(i, j)
上可能比-1.0
效果更好 精确计算。你知道吗相关问题 更多 >
编程相关推荐