将矩阵方程的解代入矩阵乘积的最大值

Subsitute a solution of a matrix equation into a matrix product in maxima

我正尝试在 Maxima 中(在 Moodle STACK 中)执行以下操作:

c : matrix([5],[3],[1],[0],[0])
x : matrix([x1],[x2],[x3],[s1],[s2]);
base0 : matrix([0],[0],[5],[0],[1]);

z : transpose(c).x;
zval : subst(base0,x,z);

但我得到的输出是 x3+3⋅x2+5⋅x1,它应该是函数 z 在点 base0 处的数值。不久前我有 a similar problemsolve 函数,但这次甚至没有像这样

那样将组件显式插入到表达式中
zval : subst(matrix([0],[0],[5],[0],[1]),matrix([x1],[x2],[x3],[s1],[s2]),matrix([5],[3],[1],[0],[0]).matrix([x1],[x2],[x3],[s1],[s2]));

有效。 solve 的问题一直没有解决,所以我想知道从现在开始我是否只需要手工计算。

subst 只是一种句法替换——它正在寻找 z 中值 x 的显式出现,它不会猜测你的意思是等同base0x 的第 i 个元素。

通过构建一个方程列表来表示预期的替换,我得到了我认为是预期的结果。

(%i6) eqs:makelist(x[i,1] = base0[i,1],i,1,5)
(%o6)              [x1 = 0, x2 = 0, x3 = 5, s1 = 0, s2 = 1]
(%i7) zval:subst(eqs,z)
(%o7)                                  5