2013-07-15 6 views
0

저는 임베디드 컨트롤러로 가기 위해 몇 가지 방정식을 개발 중입니다. 따라서 가능한 가장 단순한 조건으로 줄이려고합니다. 불행히도, wxmaxima가 뱉어 내고있는 것은 5 개의 방정식 각각에 대해 페이지 반 정도입니다. 나를 괴롭히는 것은 wxmaxima가 수행 할 수없는 명확한 단순화라는 것입니다. 예를 들어명백한 단순화가없는 맥시멈

-8*sin(Te)*L1^2*Te'^2*(m4+m5) 

이것도 전위 유사한 단순화 가득 긴 발현 한 작은 부분이다

-8*m5*sin(Te)*Te'^2*L1^2-8*m4*sin(Te)*Te'^2*L1^2 

가 감소 될 수있다. 모든 변수는 실제 변수 인 Te, Ts, Tw 항을 제외하고 실제 상수이며 Te ', Te "등을 포함합니다. 나는 인자를 시도했습니다 (전체 식에 적용하면 작동하지 않습니다) radcan , ratsimp는 fullratsimp는, 결합은, collectterms,하지만 아무것도 작동하는 것 같다없는 표현 중 하나는 아래에, 당신은 다음과 같은 변수의 일부로 사용되는 어포 스트로피와 따옴표를 허용하도록 선언해야합니다.

declare("w'", alphabetic)$ 
declare("e'", alphabetic)$ 
declare("s'", alphabetic)$ 
declare("w\"", alphabetic)$ 
declare("e\"", alphabetic)$ 
declare("s\"", alphabetic)$ 

여기에 전체 표현 중 하나입니다

(2*m5*Ts"*L2^2-m5*Te"*L2^2+8*m5*cos(Te/2)*Te'*Ts'*L1*L2+16*m5*sin(Te/2)*Ts"*L1*L2-4*m5*cos(Te/2)*Te'^2*L1*L2-8*m5*sin(Te/2)*Te"*L1*L2-2*m5*pcx5*sin(Tw)*Tw'^2* 
L2-4*m5*pcx5*Ts'*sin(Tw)*Tw'*L2+2*m5*pcx5*Te'*sin(Tw)*Tw'*L2+2*m5*pcx5*cos(Tw)*Tw"*L2+4*m5*pcx5*Ts"*cos(Tw)*L2-2*m5*pcx5*Te"*cos(Tw)*L2+16*m5*sin(Te)*Te' 
*Ts'*L1^2+16*m4*sin(Te)*Te'*Ts'*L1^2+8*m3*sin(Te)*Te'*Ts'*L1^2-16*m5*cos(Te)*Ts"*L1^2-16*m4*cos(Te)*Ts"*L1^2-8*m3*cos(Te)*Ts"*L1^2+16*m5*Ts"*L1^2+16*m4*Ts"*L1^2+ 
10*m3*Ts"*L1^2+2*m2*Ts"*L1^2-8*m5*sin(Te)*Te'^2*L1^2-8*m4*sin(Te)*Te'^2*L1^2-4*m3*sin(Te)*Te'^2*L1^2+8*m5*cos(Te)*Te"*L1^2+8*m4*cos(Te)*Te"*L1^2+4*m3*cos(Te)*Te"* 
L1^2-8*m5*Te"*L1^2-8*m4*Te"*L1^2-8*m3*Te"*L1^2+4*m5*pcx5*cos((2*Tw+Te)/2)*Tw'^2*L1-4*m5*pcx5*cos((2*Tw-Te)/2)*Tw'^2*L1+8*m5*pcx5*Ts'*cos((2*Tw+Te)/2)*Tw'*L1-4*m5*pcx5*Te'* 
cos((2*Tw+Te)/2)*Tw'*L1-8*m5*pcx5*Ts'*cos((2*Tw-Te)/2)*Tw'*L1+4*m5*pcx5*Te'*cos((2*Tw-Te)/2)*Tw'*L1+4*m5*pcx5*sin((2*Tw+Te)/2)*Tw"*L1-4*m5*pcx5*sin((2*Tw-Te)/2)*Tw"*L1+8*m5* 
pcx5*Ts"*sin((2*Tw+Te)/2)*L1-6*m5*pcx5*Te"*sin((2*Tw+Te)/2)*L1+4*m5*pcx5*Te'*Ts'*cos((2*Tw+Te)/2)*L1-3*m5*pcx5*Te'^2*cos((2*Tw+Te)/2)*L1-8*m5*pcx5*Ts"*sin((2*Tw-Te)/2)*L1+2*m5* 
pcx5*Te"*sin((2*Tw-Te)/2)*L1+4*m5*pcx5*Te'*Ts'*cos((2*Tw-Te)/2)*L1-m5*pcx5*Te'^2*cos((2*Tw-Te)/2)*L1+8*m3*pcx3*sin(Te)*Te'*Ts'*L1+4*m2*pcx2*sin(Te)*Te'*Ts'*L1+8*m4* 
pcx4*cos(Te/2)*Te'*Ts'*L1-8*m3*pcx3*cos(Te)*Ts"*L1-4*m2*pcx2*cos(Te)*Ts"*L1+16*m4*pcx4*sin(Te/2)*Ts"*L1+4*m3*pcx3*Ts"*L1-4*m3*pcx3*sin(Te)*Te'^2*L1-2*m2*pcx2* 
sin(Te)*Te'^2*L1-4*m4*pcx4*cos(Te/2)*Te'^2*L1+4*m3*pcx3*cos(Te)*Te"*L1+2*m2*pcx2*cos(Te)*Te"*L1-8*m4*pcx4*sin(Te/2)*Te"*L1+2*m5*pcx5^2*Tw"+2*Izz5*Tw"+2*m1* 
pcy1^2*Ts"+2*m5*pcx5^2*Ts"+2*m4*pcx4^2*Ts"+2*m3*pcx3^2*Ts"+2*m2*pcx2^2*Ts"+2*m1*pcx1^2*Ts"+2*Izz5*Ts"+2*Izz4*Ts"+2*Izz3*Ts"+2*Izz2*Ts"+2*Izz1*Ts"- 
(m5*pcx5^2+m4*pcx4^2+2*(m2*pcx2^2+Izz2)+Izz5+Izz4)*Te")/(2) 
+0

시도해 보셨습니까? 'trigsimp','trigrat' 및'trigreduce'? –

답변

1

당신은 시도 할 수

load (scifac); 
declare("`", alphabetic); 
expr: (-8*m5*sin(Te)*Te`^2*L1^2-8*m4*sin(Te)*Te`^2*L1^2); 
gcfac(expr); 
               2 2 
(%o2)     - 8 (m5 + m4) sin(Te) Te` L1 

나는`(backtick) not '(아포스트로피)를 사용한다.

optimize 일 수 있습니다.

0

내 방법은 표준인지 아닌지 모르겠지만, 내가 최대의 계산을 할 때마다 나는 명령을 그래서 당신의 예에 내가했을

ratsimp(); 

를 사용

load(scifac)$ 
declare("`", alphabetic)$ 
ratsimp(-8*m5*sin(Te)*Te'^2*L1^2-8*m4*sin(Te)*Te'^2*L1^2); 

(-8*m5-8*m4)*sin(Te)*Te`^2*L1^2 

내가뿐만 아니라 역 따옴표를 사용하는 출력을 생성,하지만 내가 '생각하기 때문에 R입니다 eserved; 그리고 백틱을 선언 한 후에, 나는 모든 변수를 선언 할 필요가 없었습니다.