2013-04-18 3 views
1

저는 Mathematica에 매우 익숙하며 다음 문제를 해결하려고합니다.어떻게 Mathematica에서 double integral을 풀 수 있습니까?

  1. 저는 큐브 방정식이 Z = aZ^3 + bZ^2 + a + b입니다. 먼저 Z에 대해 분석적으로이를 풀고 a와 b의 함수로 최소의 양수근을 선택하는 함수를 얻고 싶습니다.

나는 루트를 얻기 위해 내가 사용하는 수 있다고 생각 : 나는 확실히 뿌리를지고 있지 않다처럼 내가 일반 차 방정식 솔루션 공식을 사용하여 기대하는 것처럼

Z = Solve[z == az^3 + bz^2 + a + b, z]; 

그것은 보인다.

  1. 나는 (바람직하게 분석적으로, 다시) 0에서 1로 ab에 대한 1-a에 대한 ab 이상 Z의 최소한의 긍정적 인 루트를 통합하려는.

나는

Y = Integrate[Z, {a, 0, 1}, {b, a, 1}]; 

을 시도하고 그 어떤 공식이나 숫자 값을 제공하는 것, 그러나 다만 중요한을 반환하지 않습니다. (주의 할 점은 최소한의 양수근을 선택하는 방법조차 모르겠지만, Mathematica를 가지고 알아 내려고 노력하고 있습니다.)

어떻게하는지에 대한 아이디어가 있습니까?

답변

1

a 또는 bz 사이의 공백이 중요합니다. 다음과 같은 방법으로 뿌리를 얻을 수 있습니다.

sol = z /. Solve[z == a z^3 + b z^2 + a + b, z] 

그러나이 표현식에 예상대로 해결책이 있습니까? a=0.5b=0.5의 경우 유일한 실제 루트는 음수입니다. 어떤 솔루션이없는 경우

sol /. {a->0.5, b->0.5} 
{-2.26953,0.634765-0.691601 I,0.634765+0.691601 I} 
+0

감사합니다! 그 작품. p와 q의 함수로 sol에서 가장 작은 양수근을 어떻게 선택합니까? – kloop

+0

좋은 질문입니다. 나는 그것에 대해 생각 해왔다. 내가 생각할 수있는 길고 안전한 방법은'Select [sort [sol /. {a-> 0,5, b-> 0.5}], 엘리먼트 [#, Reals] && #> = 0 &, 1]'을 사용할 수 있습니다. 그러나 긍정적 인 루트가 없으면 {}을 반환합니다. 나는 더 나은 방법이 있다고 가정하고, 나는 전문가가 아니다. 어쨌든 분석적 솔루션을 제공하지는 않습니다. – siritinga

+0

Min [Select [sol, Positive]]를 시도했지만 select 문은 a와 b가있는 항목을 무시하고 양수 값만 찾습니다. 나는 그것을하는 b의 함수를 원합니다. – kloop

0
sol = z /. Solve[z == a z^3 + b z^2 + a + b, z]; 
zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
     Min[Select[ sol /. {a -> a0, b -> b0} , 
       Element[#, Reals] && # > 0 & ]] 

이것은 -infinty 반환합니다. ..

NIntegrate[zz[a, b], {a, -.5, -.2}, {b, .8, .9}] ->> 0.0370076 

편집 ---

sirintinga 귀하의 예를 언급 한 바와 같이 통합 한도는

RegionPlot[NumericQ[zz[a, b] ] , {a, -1, .5}, {b, -.5, 1}] 

enter image description here

... 유효하지 않은하지만 당신은 유효한 지역이 있다면 당신은 수치 적으로 통합 할 수 있습니다

거기에 버그가 있습니다. Reals에서 Select는 극소의 복잡한 부분을 가진 실제 솔루션을 던지고 있습니다. ..

zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
     Min[Select[ Chop[ sol /. {a -> a0, b -> b0} ], 
       Element[#, Reals] && # > 0 & ]] 

Edit2, 만족스럽지 않은 Chop을 발견하면 더 깨끗한 접근법입니다.

zz[a0_ /; NumericQ[a0], b0_ /; NumericQ[b0]] := 
    Module[{z, a, b}, 
      Min[z /. Solve[ 
      Reduce[(z > 0 && z == a z^3 + b z^2 + a + b /. 
        { a -> a0, b -> b0}), {z}, Reals]]]] 
RegionPlot[NumericQ[zz[a, b] ] , {a, -2, 2}, {b, -2, 2}] 

enter image description here

NIntegrate[zz[a, b], {a, 0, .5}, {b, 0, .5 - a}] -> 0.0491321 
관련 문제