これを行う方法を見つけるのに苦労しています:
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)
maxima での割り当ては、= ではなく : によって行われます (これは等しいかどうかのチェックに使用されます)。
実際、多くの変数を割り当てずに彼が要求している出力を取得するには、次のようにするだけです。
(%i1) z = x*y, x = a+b, y = c+d, expand;
(%o1) z = b d + a d + b c + a c
これは古い質問ですが、私の意見では標準的な解決策は subst() 関数です