2014-12-09 7 views
2

min (a, b)가 포함 된 수식을 단순화하기 위해 Maxima를 사용하려고합니다. I 정의한 말
Z = 분 (X1, X2)D = ABS (X1 - X2) 다음 아이덴티티 X1의 * 2 배 = Z의 * (Z + d)X1 + X2 = 2 * z + d이옵니다.Maxima : 최소값을 포함하는 표현식을 간소화하십시오.

예를 들어, 다음 식을 가지고 : 나는 수동으로 위의 신원을 적용하면

(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 

긴 표현식을 만듭니다.

어떻게 맥시마는 식의 내부에 깊이 묻혀 X1의 * × 2X1의 + × 2의 발생을 찾을 수 있는가?

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

가 어떻게 맥시마가 발생 할 수 있습니다 : 나는 예를 들어, 을 letsimp하자, tellsimp 다양한 형태의 시도 내가 수동으로 도착할 수있는 멋진 짧은 표현식? 나는 훨씬 더 큰 표현으로 작업해야한다.

답변

3

유용 할 수도 있습니다.

load ("lrats");

lratsubst([x1*x2=z*(z+d),x1+x2=2*z+d], 
    (2*z^3+(−3*x2−3*x1)*z^2+6*x1*x2*z)/6) 

(2 * Z^3 + 3 * D * Z^2) 또한/6

당신이 당신의 신원을 테스트하려는 경우, 당신은 이제 숫자 넣어

z(x1,x2):=min(x1,x2)$ 
d(x1,x2):=abs(x1-x2)$ 

을 할 수 값은 z (2,3) * (z (2,3) + d (2,3)) = 6이라고 말합니다. 분명히 이것들은 표현을 단순화하는 데 도움이되지 않습니다.

+0

_lrats_ 작품, 고맙습니다. 이제 내 문제는 그것이 너무 잘 작동한다는 것입니다. 더 큰 표현에서 모든 단순화를 이해할 수는 없습니다 ... – Mankka