Maxima 有一个有用的函数,称为optimize
:
功能:优化(expr)
返回一个表达式,它产生与 expr 相同的值和副作用,但通过避免重新计算公共子表达式来更有效地这样做。optimize 还具有“折叠”其参数的副作用,以便共享所有公共子表达式。为示例做示例(优化)。
它会将您上传到 Ideone 的表达式简化为:
block(
[%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14],
%1:a^2,
%2:b^2,
%3:c^2,
%4:d^2,
%5:-%4+2*b*d-%2,
%6:-%3+2*a*c-%1,
%7:2*a-2*c,
%8:2*c-2*a,
%9:
%8*d+b*%7,
%10:%7*d+b*%8,
%11:i^2,
%12:j^2,
%13:-2*%12-4*i*j-2*%11,
%14:%12+2*i*j+%11,(-sqrt(%4*%14+%3*%14+%2*%14+%1*%14+b*d*%13+a*c*%13+%6*h^2+ (%9*g+2*%3-4*a*c+2*%1)*f+%10*e)*h+%5*g^2+f*(%10*g+%9*e)+(2*%4-4*b*d+2*%2)*e*g+%6*f^2+%5*e^2)-(d-b)*h-(c-a)*g-(b-d)*f-(a-)*e)/(%4-2*b*d+%3-2*a*c+%2+%1))
不一定更具可读性,但它不包含更多常见的子表达式。