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

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

给定第一行向量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将由用户在开头定义)

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

python matrix sage
1个回答
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]
© www.soinside.com 2019 - 2024. All rights reserved.