象征性地替换最大值中的表达式



我很难找到如何做到这一点:

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) 

最大值分配由:,not=(用于检查相等性)

完成

实际上,为了在不分配大量变量的情况下获得他请求的输出,你可以这样做:

(%i1) z = x*y, x = a+b, y = c+d, expand;
(%o1) z = b d + a d + b c + a c

这是一个老问题,但在我看来,规范的解决方案是subst()函数

最新更新