2014-10-02 3 views

답변

2

당신은 collect으로 올바른 생각을 가지고 있습니다. 그러나 collect 설명서를 보면 한 번에 번을 개로 제한 할 수 있습니다. 한 번에 두 개의 변수를 인수 분해하고 싶다면 collect을 두 번 호출해야합니다. 즉, 고려해야 할 각 변수에 대해 한 번씩 호출해야합니다. 어떤 변수를 고려해야 하는지를 알려주는 collect에 추가 입력을 지정해야합니다. 기호식 이외의 매개 변수없이 collect을 단독으로 사용하면 symvar으로 결정되는 기본 변수를 고려하여 귀하의 경우 f이됩니다. 당신이 당신의 게시물 말씀을 달성하려는 경우 따라서, 당신은이 작업을 수행해야합니다 : 생각하는

syms a b c d e f; %// Define symbolic variables 
eqn = a*b*c+a*d*e+b*d*f+c*e*f; %// Define expression 
final_eqn = collect(collect(eqn, f), a) 

final_eqn = 

(b*c + d*e)*a + (b*d + c*e)*f 

뭔가 ...

MATLAB 그것을 시도 곳 simple라는 유틸리티가 있습니다를 표현에 대한 다양한 단순화 기능을 제공하고, 각 단순화가 무엇인지 출력합니다. 나는 그것이 당신의 경우에 특히 유용하지 않습니다 생각

>> simple(eqn); 

simplify: 

a*b*c + a*d*e + b*d*f + c*e*f 


radsimp: 

a*b*c + a*d*e + b*d*f + c*e*f 


simplify(Steps = 100): 

a*b*c + a*d*e + b*d*f + c*e*f 


combine(sincos): 

a*b*c + a*d*e + b*d*f + c*e*f 


combine(sinhcosh): 

a*b*c + a*d*e + b*d*f + c*e*f 


combine(ln): 

a*b*c + a*d*e + b*d*f + c*e*f 


factor: 

a*b*c + a*d*e + b*d*f + c*e*f 


expand: 

a*b*c + a*d*e + b*d*f + c*e*f 


combine: 

a*b*c + a*d*e + b*d*f + c*e*f 


rewrite(exp): 

a*b*c + a*d*e + b*d*f + c*e*f 


rewrite(sincos): 

a*b*c + a*d*e + b*d*f + c*e*f 


rewrite(sinhcosh): 

a*b*c + a*d*e + b*d*f + c*e*f 


rewrite(tan): 

a*b*c + a*d*e + b*d*f + c*e*f 


mwcos2sin: 

a*b*c + a*d*e + b*d*f + c*e*f 


collect(f): 

(b*d + c*e)*f + a*b*c + a*d*e 

, 그러나 당신이있어 단순화 알고리즘이 있다면 살펴보고 뭔가 : 당신이 당신의 표현에 이것을 시도하는 경우, 이것은 당신이 무엇을 얻을 행복하지 않아. 당신은 simple로 그들 모두를 시도 할 수 있으며 당신에게 가장 적합한 것을 고를 수 있습니다.