我正试图在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
的显式出现,并且它不认为你的意思是将base0
和x
的第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