我正在尝试使用 Maxima 来简化涉及 min(a, b) 的数学表达式。假设我已经定义了
z = min(x1, x2)和d = abs(x1 - x2),那么身份x1 * x2 = z*(z+d)和x1 + x2 = 2*z + d随之而来。
例如,采用以下表达式:
(2*z^3+(−3*x2−3*x1)*z^2+6*x1*x2*z)/6
如果我手动应用上述身份,我可以将其简化为
z^3 / 3 + (z^2 * d) / 2
在千里马,天真地尝试
subst(min(x1, x2), v, ((6*v*x1−3*v^2)*x2−3*v^2*x1+2*v^3)/6), ratsimp
产生一个长的表达。
如何让 Maxima 找到隐藏在表达式深处的x1 * x2和x1 + x2的出现?我尝试了各种形式的tellimp、let和letsimp,例如:
let(x1*x2, z * (z+d))
或者
let(K * x1*x2, K * z * (z + d), K, integer)
或者
matchdeclare(R, true)
let(R * x1*x2 * z, R * z * (z+d))
我怎样才能让 Maxima 产生我可以手动到达的漂亮的简短表达式?我需要处理更大的表达式。