Matrix sage:符号向量与方阵乘积的问题

Matrix sage:符号向量与方阵乘积的问题,matrix,vector,product,symbolic-math,sage,Matrix,Vector,Product,Symbolic Math,Sage,我试图用符号(变量向量)和系数矩阵乘法做一些实验 代码如下: A = matrix(QQ,[ [2,1,2,-6], [-1,2,1,7], [3,-1,-3,-1], [1,5,6,0] ]) k = A.transpose().kernel() basis = k.basis()[0] t = 'real' var('x1') assume(x1,t) var('x2') assume(x2,t) var('x3') assume(x3,t) var('x4

我试图用符号(变量向量)和系数矩阵乘法做一些实验

代码如下:

A = matrix(QQ,[
    [2,1,2,-6],
    [-1,2,1,7],
    [3,-1,-3,-1],
    [1,5,6,0]
])

k = A.transpose().kernel()
basis = k.basis()[0]
t = 'real'
var('x1')
assume(x1,t)
var('x2')
assume(x2,t)
var('x3')
assume(x3,t)
var('x4')
assume(x4,t)

x = vector([x1,x2,x3,x4])
print "x",x
xT = x.transpose()
print "xT",xT
print "A*x",A*x
print "xT*A",xT*A
具有以下输出:

x (x1, x2, x3, x4)
xT [x1]
[x2]
[x3]
[x4]
A*x (2*x1 + x2 + 2*x3 - 6*x4, -x1 + 2*x2 + x3 + 7*x4, 3*x1 - x2 - 3*x3 - x4, x1 + 5*x2 + 6*x3)
xT*A
Traceback (most recent call last):    
  File "", line 1, in <module>

  File "/tmp/tmpuVBZ96/___code___.py", line 27, in <module>
    exec compile(u'print "xT*A",xT*A
  File "", line 1, in <module>

  File "element.pyx", line 2751, in sage.structure.element.Matrix.__mul__ (sage/structure/element.c:19587)
  File "coerce.pyx", line 856, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure    /coerce.c:8169)
TypeError: unsupported operand parent(s) for '*': 'Full MatrixSpace of 4 by 1 dense matrices over Symbolic Ring'     and 'Full MatrixSpace of 4 by 4 dense matrices over Rational Field'
x(x1,x2,x3,x4)
xT[x1]
[x2]
[x3]
[x4]
A*x(2*x1+x2+2*x3-6*x4,-x1+2*x2+x3+7*x4,3*x1-x2-3*x3-x4,x1+5*x2+6*x3)
xT*A
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/tmp/tmpuVBZ96/__________.py”,第27行,在
exec编译(u'打印“xT*A”,xT*A
文件“”,第1行,在
文件“element.pyx”,第2751行,在sage.structure.element.Matrix.\uuuuu mul\uuuuu(sage/structure/element.c:19587)中
sage.structure.concure.concuriodmodel_cache_maps.bin_op(sage/structure/concure.c:8169)中第856行的文件“concure.pyx”
TypeError:“*”的操作数父级不受支持:“符号环上4×1密集矩阵的完整矩阵空间”和“有理域上4×4密集矩阵的完整矩阵空间”

正如你所看到的,
A*x
是成功的,但是
xT*A
给出了一个例外。你知道为什么吗?你会怎么解决这个问题吗?

我不知道sage,也没有安装它,但这类似于matlab的问题,所以在专家出现之前,我会提出一些建议。我认为向量是不可分割的大量行或列。尝试使用x*A而不是xT*A,我认为sage允许这样做。要进行测试,请与A.transpose()*x进行比较