给定第一行向量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将由用户在开头定义)
如何编写一个简单的程序,它将为我提供上面定义的矩阵?
答案 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]