为了完整起见,只需添加这个,以防其他人有同样的问题。
首先,我相信 OP 中定义的 V 实际上是 list 而不是 vector,按照 Maxima 的定义;但是,无论哪种情况,方法都是相同的:
M:matrix([a,b,c],[d,e,f],[g,h,r]);
V:[w,k,t]; /* V is a list */
v1:transpose([w,k,t]); /* v1 is a column vector */
v2:matrix([w],[k],[t]); /* v2 is a column vector */
在所有情况下,使用args:
output1:args(M.V); /* returns a list of lists */
output2:args(M.v1); /* returns a row vector */
output3:args(M.v2); /* returns a row vector */
将返回看起来相同但行为不完全相同的对象。例如:
output1[1,1]; /* will return an error, because `output1` is a list, not a matrix */
output1[1][1]; /* will return the first (only) entry of the first list */
output2[1,1]; /* returns the 1-1 element of the vector `output2` */
output2[1][1]; /* isn't defined, because `output2` is a vector, not a list */
(对于输出 3 也是如此)。