【发布时间】:2014-12-09 09:24:15
【问题描述】:
我正在尝试使用 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 的出现?我尝试过各种形式的tellsimp、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 生成我可以手动得出的漂亮的简短表达式?我需要处理更大的表达式。
【问题讨论】:
标签: maxima computer-algebra-systems