2

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

x=a+b
y=c+d
z=x*y

我希望输出是

z=ac+ad+bc+bd

不是

z=xy
4

3 回答 3

7

像这样?

(%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) 

最大值的赋值由 :,而不是 =(用于检查相等性)完成

于 2011-05-27T09:49:00.400 回答
2

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

(%i1) z = x*y, x = a+b, y = c+d, expand;
(%o1) z = b d + a d + b c + a c
于 2013-07-18T17:54:30.763 回答
1

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

于 2013-10-04T17:18:58.703 回答