如何在Sage中创建矢量循环矩阵?

时间:2014-09-17 14:33:36

标签: python matrix sage

给定第一行向量R0 = [a0,a1,...,a(n-1)]和特定向量V,我想在SAGE中创建一个“向量循环矩阵”,其构造如下。

矩阵的行将是

R0=R0; R1=p(R0); R2=p(R1), ..., R(n-1)=p(R(n-2))

其中p是一个地图,例如行Ri = [r0,r1,...,r(n-1)]和 使它成为[0, r0, r1,...,r(n-2)]+r(n-1)*V

请注意,我尝试用Sage语言编写所有内容。这不像经典的循环,Toeplitz或Hankel矩阵结构。

(n,R0,矢量V将由用户在开头定义)

如何编写一个简单的程序,它将为我提供上面定义的矩阵?

1 个答案:

答案 0 :(得分:0)

这是一个功能:

def f(r,v):
    def p(x):
        return vector([0]+list(x[:-1r])) + x[-1r]*v
    m = [r]
    for _ in xrange(len(r)-1r):
        m.append(p(m[-1r]))
    return matrix(m)

示例:

sage: r = vector(ZZ,(0, 1, 2, 3,))
sage: v = vector(ZZ,(3, 5, 7, 9,))
sage: f(r,v)
[   0    1    2    3]
[   9   15   22   29]
[  87  154  218  283]
[ 849 1502 2135 2765]