将矩阵方程的解替换为最大值的矩阵乘积



我正试图在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的数值。不久前,我在solve-函数中遇到了类似的问题,但这次甚至没有像那样将组件显式插入表达式中

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

最新更新