수식을 단순화하는 데 도움이되는 맥시마 소프트웨어를 사용하고 있습니다. 보통, subst, ratsubst, factor, ratsimp로 쉽게 관리 할 수 있습니다 ... 그러나 내가 원하는 방식을 단순화하기가 어려운 수식이 아직 없습니다.맥시마 소프트웨어의 수식 단순화
A> B와 C> D가, 내가 시작으로 분수를 단순화하고 싶습니다 가정 - 서명이 방법 :
-(a - b)/(d - c) -> (a - b)/(c - d)
을하지만 난 그것을하지 않는 방법에 대해 설명합니다. maxima simplifier 알고리즘 은 자체 방식으로 변수를 정렬하려고합니다.
이러한 쓸모없는 빼기 기호를 단순화하려고 최대 자체 함수를 만들었습니다.
no_minus(fraction):= block([simp:true, numerat:expand(-ratnumer(fraction)), denominat:expand(-ratdenom(fraction))], block([simp:false], numerat/denominat)); -a/(b-x); no_minus(-a/(b-x)); no_minus(-a*b*c/(b-x*b*f-f));
내가 no_minus는 (-a/(B-x는))는/(X-B)를 반환했을 것으로 예상 싶지만 그렇지 않았다.
저는 두 개의 표현식이 거의 동일하다는 것을 나타내는 새로운 중위 연산자를 소개하고자합니다. 예를 들어 x가 y와 거의 같은 인 경우 내가 주목하고 싶은 그것을 simplifier을 구성하는 방법
x =~ y
infix("=~").
되도록 입력
을 때
2*x+3 =~ u+v;
(%-3)/2;
출력 당신은 tellsimp
(그리고 tellsimpafter
, defrule
및 defmatch
)를 통해 단순화 규칙을 정의 할 수 있습니다,
x =~ (u+v-3)/2
정말 고맙습니다. 방금 괄호를 없애기 위해 rbp = 80 및 lbp = 80을 추가했습니다. 이것이 내가 중급어 인 "approx"연산자를 해결하는 데 필요한 것입니다.; 중절 문자 ("= ~"); matchdeclare ([aa, bb, cc], 모두); tellsimp ((aa = ~ bb) * cc, (aa * cc) = ~ (bb * cc)); tellsimp ((aa = ~ bb) + cc, (aa + cc) = ~ (bb + cc)); (2 * x + 3) = ~ (5 * y^2 + 6); (% -3)/2; 2 * x + 3 = ~ 5 * y^2 + 6; (% -3)/2; 중절 ("= ~", 80,80); 2 * x + 3 = ~ 5 * y^2 + 6; (% -3)/2; "= ~"(2 * x, 3 * y + 4); % -4; – Arthur