2017-10-16 4 views
3

maxima에 다항식 x^2+y^2이 있으면 최대 값은 y^2+x^2과 같습니다. 변수 x이 변수 y 앞에 대신 표시되도록 지정하는 방법이 있습니까?maxima x^2 + y^2 변수의 순서는 y^2 + x^2가됩니다.

+0

'ordergreat'와'mainvar' 일을 할 : 비교를 위해

여기에 앞의 표현을위한 기본 순서입니다. 이 질문은 https://stackoverflow.com/q/36456544/349708을 참조하십시오. – Eelvex

+0

@eelvex 고맙습니다. 시도해 보았습니다 만, 이제'x^2 + x * y + y^2'를 시도하면'x^2 + y * x + y^2'가됩니다. – Kasper

답변

5

Maxima는 모든 표현식에 매우 강력하고 부과 된 변수 정렬에 대한 기본 아이디어가있어 단순화를 위해 정규화하기위한 노력의 일환입니다. 어떤면에서이 순서는 일반적으로 손으로 계산하는 데 사용되는 일반적인 순서와 같지 않지만 익숙해 질 수 있습니다. Maxima가 그것에 대해 마음을 바꾸게하는 것은 꽤 어렵습니다.

즉, 글로벌 변수 powerdisp은 "+"표현의 표시를 제어합니다. powerdisp은 기본적으로 false입니다. powerdisptrue 일 때 "+"표현식의 순서가 반대로됩니다. 이 모든 "+"표현을 재정렬 - powerdisp가 둔기 것을

(%i1) x^2 + y^2; 
            2 2 
(%o1)        y + x 
(%i2) x^2 + y^2 + 2*x*y; 
           2   2 
(%o2)       y + 2 x y + x 
(%i3) powerdisp; 
(%o3)        false 
(%i4) powerdisp:true; 
(%o4)        true 
(%i5) %o2;   
           2   2 
(%o5)       x + 2 x y + y 
(%i6) %o1; 
            2 2 
(%o6)        x + y 

참고. 허용되는지 여부를 결정할 수 있습니다.

mainvar 또는 ordergreat을 사용하지 않는 것이 좋습니다. 특정 변수에 대해서만 문제가 해결됩니다.

+0

tex 출력에서 ​​다르게 정렬되는 변수 (알파벳 순서) 만 갖는 것에 관심이 있다면 더 나은 해결책입니까? 맥시마로 작업 할 때는 주문에 대해별로 신경 쓰지 않지만 학생에게 표시하면 혼란 스럽습니다. 나는 맥시마를 사용하여 운동을위한 라텍스 솔루션을 자동 생성합니다. – Kasper

+0

예, TeX 출력 만 변경할 수 있습니다. 가장 명확한 방법은 약간의 Lisp 프로그래밍이 필요합니다. 'powerdisp : true'는 원하는 효과를 가지고 있습니까?아니면 여전히 주문이 필요하십니까? –

+0

Powerdisp 꽤 좋은 것 같습니다, 유일한 문제는 지금까지 지수와 있습니다. 'powerdisp : true'를 설정하면'x^3 + x^2 + 2 * x * y + y^2'가'x^2 + x^3 + 2 * x * y + y^2'가됩니다. – Kasper

2

"+"표현식의 기호 순서를 바꾸는 방법을 알아 냈으므로 az 앞에옵니다. 그러나 임의의 주어진 심볼에 대해, 지수는 현재와 동일한 순서, 즉 감소하는 순서로 정렬된다. 이 코드를 Github 프로젝트로 게시했습니다 : https://github.com/robert-dodier/maxima-mplus-symbols-reversed

하나의 Lisp 코드 파일이 있습니다. Git repo를 복제하거나 위에서 언급 한 프로젝트 페이지에서 하나의 파일 만 다운로드 할 수 있습니다. 시도해보고 내 생각을 알려주세요. 이 코드는 2-d 및 1-d 콘솔 디스플레이 및 TeX 출력을 변경합니다. 나는 아래의 2-D 출력만을 보여줄 것이다. 다른 산출물은 동일한 용어 순서를 갖는다.

예 :

조금 실망
(%i1) load("form-mplus-symbols-reversed.lisp") $ 
(%i2) reverse_symbols_order:true $ 
(%i3) x^2+y^2; 
            2 2 
(%o3)        x + y 
(%i4) x^3+x^2+2*x*y+y^2; 
           3 2 2 
(%o4)      x + x + y + 2 x y 

- 그것은 x 이용 y 용어 사이에 혼합 된 용어를 넣어 관례입니다. 하지만 에 대한 y^2의 게재 위치가 x^2의 유무에 따라 다르기 때문에 더 복잡한 정렬 방식의 휴리스틱 없이는이를 달성 할 수없는 것으로 보입니다. 시간 (현재 구현에서와 같이).

(%i5) reset (reverse_symbols_order) $ 
(%i2) x^3+x^2+2*x*y+y^2; 
           2   3 2 
(%o2)      y + 2 x y + x + x 
+0

감사! 그것은 실제로 powerdisp에 이미 큰 개선이 된 것 같습니다. 나는 그것을 코드로 시험해보고 학생들이 생각하는 것을 보게 될 것이다. 실제로 2 * x * y가 사이에 놓일 수 있다면 이상적입니다. – Kasper

관련 문제