我很难找到如何做到这一点:
x=a+b
y=c+d
z=x*y
我希望输出是
z=ac+ad+bc+bd
不是
z=xy
像这样?
(%i1) x: a+b;
(%o1) b + a
(%i2) y: c+d;
(%o2) d + c
(%i3) z: x*y;
(%o3) (b + a) (d + c)
(%i4) z: expand (z);
(%o4) b d + a d + b c + a c
(%i5)
最大值的赋值由 :,而不是 =(用于检查相等性)完成
实际上,要在不分配大量变量的情况下获得他请求的输出,您可以这样做:
(%i1) z = x*y, x = a+b, y = c+d, expand;
(%o1) z = b d + a d + b c + a c
这是一个老问题,但我认为规范的解决方案是 subst() 函数