2011-03-02 2 views
2

방정식 (방정식의 체계)에서 계수를 목록 (행렬)으로 추출하려고합니다. 나는 시도했지만 성공하지 않고 CoefficientList[poly, {var1, var2, ...}].계수의 목록/행렬 방정식 (방정식의 체계)

이 간단한 예는 내 문제를 설명해야한다 :

Eq1 = a D[U[x1, x2], {x1, 2}] + b D[V[x1, x2], {x2, 2}] 

reproduce problem

어떤 조언을?

편집 :

다니엘의 Lichtblau 솔루션은 매우 분명하다 (당신에게 감사),하지만 만약 다음과 같습니다 방정식? 더 우아한 해결책은

additional question

거기에 다음과 같이

Eq1 = a D[U[x1, x2], {x1, 2}] + b D[V[x1, x2], {x2, 2}] + c W[x1, x2] 

간단한 예를

가 해결 될 수 있는가? (특히 더 복잡한 표현식의 경우)

Ps 왜 그런지 이해할 수 없지만이 솔루션을 사용하면 올바른 결과를 얻을 수 있습니다. 패턴이 일치 할 필요가 있으므로

reproduce problem

+0

무슨 상태 CoefficientList 경우 '[EQ1 {V^(0.2) [x1, x2], U^(2,0) [x1, x2]}]'? – vissi

+0

[Co [x1, x2], {x1, 2}] + b D [V [x1, x2], {x2, 2}], [D [U [x1, ], {x1, 2}], D [V [x1, x2], {x2, 2}]}]' –

답변

4

는 우선 편미분은 Derivative로 표현된다. 또한, 나는 두 표현식이 나타나는 용어를 받아 들일 것이라고 CoefficientList을 사용하고 싶지 않다고 생각합니다.

다음
In[7]:= (Coefficient[Eq1, #] &) /@ {Derivative[2, 0][U][x1, x2], Derivative[0, 2][V][x1, x2]} 
Out[7]= {a, b} 

(Coefficient[Eq1, #] &)는 인수의 계수를 발견 익명 함수이며, /@은 오른쪽 목록에 매핑 : 모두 모두, 다음과 같은 작업을해야합니다.

HTH

+0

고마워. 이것은 내가 필요한 것입니다. – kros

1

CoefficientArrays 종종 일부 변수 세트의 선형 시스템에 대한 계수를 추출하는 데 유용하다. 이 경우 먼저 변수 목록을 가져와야합니다.

dvars = Cases[Eq1, Derivative[__][_][__], -1]; 

CoefficientArrays는 {상수, 계수} 형식의 결과를 반환합니다. 스파 스 배열을 사용하므로 Normal을 사용하여 명시 적 목록으로 변환합니다.

Normal[CoefficientArrays[Eq1, dvars]] 

아웃 [672] = {0, {B, A}}

다니엘 Lichtblau 볼프람 연구

+0

우수. 감사합니다. 질문을 업데이트했습니다. 나는 당신이 그것을 볼 수 있다면 매우 감사 할 것입니다. – kros