Хорошо, это довольно озадачивает, хотя теперь я понимаю, что происходит.
subst
— это последовательная (один за другим) замена, поэтому subst([F1 = ..., F2 = ...], ...)
эквивалентно subst(F2 = ..., subst(F1 = ..., ...))
. То есть сначала подставьте F1
, а затем подставьте F2
в результат этого.
Однако результатом subst(F1 = [x1, y1, z1], F1 - F2)
является [x1 - F2, y1 - F2, z1 - F2]
. Теперь вы можете видеть, что произойдет, если вы подставите F2
в это - вы получите беспорядочный вложенный список.
Я думаю, если вы попробуете psubst
(параллельная подстановка), вы получите ожидаемый результат.
(%i2) forces:[
F1=[x1,y1,z1],
F2=[x2,y2,z2]
];
(%o2) [F1 = [x1, y1, z1], F2 = [x2, y2, z2]]
(%i3) equations:[F3=-F2];
(%o3) [F3 = - F2]
(%i4) subst(equations, F1 + F3);
(%o4) F1 - F2
(%i5) psubst (forces, %o4);
(%o5) [x1 - x2, y1 - y2, z1 - z2]
(%i6) psubst(forces, subst(equations, F1 + F3));
(%o6) [x1 - x2, y1 - y2, z1 - z2]
person
Robert Dodier
schedule
27.10.2019
F3
? - person Robert Dodier   schedule 25.10.2019